OSError: [WinError 1455] 页面文件太小,无法完成操作、error 1114:动态链接库(DLL)初始化例程失败

本文主要是介绍OSError: [WinError 1455] 页面文件太小,无法完成操作、error 1114:动态链接库(DLL)初始化例程失败,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 一、背景

 在利用yolo训练自制数据集的时候,出现了【OSError: [WinError 1455] 页面文件太小,无法完成操作】和【OSError: [WinError 1114] 动态链接库(DLL)初始化例程失败】的错误。

D:\ProgramData\Anaconda3\envs\py38train\python.exe "D:/BaiduNetdiskDownload/pycv-learning/yolov5-spot detection/train.py"
wandb: Currently logged in as: genorgp (use `wandb login --relogin` to force relogin)
wandb: Appending key for api.wandb.ai to your netrc file: C:\Users\Administrator/.netrc
github: skipping check (not a git repository), for updates see https://github.com/ultralytics/yolov5
train: weights=pretrained\yolov5s.pt, cfg=models\yolov5s_spot.yaml, data=data\spot_data.yaml, hyp=data\hyps\hyp.scratch.yaml, epochs=300, batch_size=1, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, evolve=None, bucket=, cache=None, image_weights=False, device=0, multi_scale=True, single_cls=False, adam=False, sync_bn=False, workers=0, project=runs\train, name=exp, exist_ok=False, quad=False, linear_lr=False, label_smoothing=0.0, patience=100, freeze=0, save_period=-1, local_rank=-1, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest
YOLOv5  2022-1-26 torch 1.9.0+cu111 CUDA:0 (NVIDIA GeForce GTX 1650, 4096MiB)Model Summary: 270 layers, 7041205 parameters, 7041205 gradients, 15.9 GFLOPsTransferred 342/349 items from pretrained\yolov5s.pt
Scaled weight_decay = 0.0005
optimizer: SGD with parameter groups 57 weight, 60 weight (no decay), 60 bias
train: Scanning 'D:\BaiduNetdiskDownload\pycv-learning\data\spot_data\labels\train' images and labels...:   0%|          | 0/3308 [00:00<?, ?it/s]Traceback (most recent call last):ImportError: DLL load failed while importing groupby: 页面文件太小,无法完成操作。
Traceback (most recent call last):MemoryError
Traceback (most recent call last):File "D:\ProgramData\Anaconda3\envs\py38train\lib\site-packages\numpy\core\__init__.py", line 23, in <module>from . import multiarrayFile "D:\ProgramData\Anaconda3\envs\py38train\lib\site-packages\numpy\core\multiarray.py", line 10, in <module>from . import overridesFile "D:\ProgramData\Anaconda3\envs\py38train\lib\site-packages\numpy\core\overrides.py", line 6, in <module>from numpy.core._multiarray_umath import (
ImportError: DLL load failed while importing _multiarray_umath: 找不到指定的模块。During handling of the above exception, another exception occurred:Traceback (most recent call last):File "<string>", line 1, in <module>File "D:\ProgramData\Anaconda3\envs\py38train\lib\multiprocessing\spawn.py", line 116, in spawn_mainexitcode = _main(fd, parent_sentinel)File "D:\ProgramData\Anaconda3\envs\py38train\lib\multiprocessing\spawn.py", line 125, in _mainMemoryError
wandb: Currently logged in as: genorgp (use `wandb login --relogin` to force relogin)
wandb: Appending key for api.wandb.ai to your netrc file: C:\Users\Administrator/.netrc
train: Scanning 'D:\BaiduNetdiskDownload\pycv-learning\data\spot_data\labels\train' images and labels...3308 found, 0 missing, 0 empty, 0 corrupted: 100%|██████████| 3308/3308 [00:15<00:00, 209.51it/s]
Traceback (most recent call last):OSError: [WinError 1114] 动态链接库(DLL)初始化例程失败。 Error loading "D:\ProgramData\Anaconda3\envs\py38train\lib\site-packages\torch\lib\caffe2_detectron_ops_gpu.dll" or one of its dependencies.

二、解决过程

网上大概有以下几种解决方案,我已全部总结于此:

2.1 调小batch size

2.2 调小num_worker 

2.3 自定义虚拟内存

因为我的python环境安装在D盘,项目地址也在D盘 ,所以直接扩展D盘的虚拟内存。

2.4 配置环境变量

因为上面3种方法都试遍了,还是没办法解决问题,所以我就找到下面这篇付费专栏文章,花了19.9元看了全文。

说到底,它里面的说法就是给pycharm配置了一个环境变量,具体内容见下图吧!

我配置完成后,再次跑程序,又出错了!20元打水漂了,因此我强烈怀疑这个作者就是在割韭菜,搞一个常见错误解决方法的付费专栏,专门坑那些因为异常/bug急得焦头焦脑的韭菜。

2.5 显卡性能最大化

在高级电源选项中进行该项设置;界面和选项名称可能不一样,但是实际效果一样。

2.6 重启pycharm或重启电脑

上面这些方法都试了没用,就试试这个玄学的方法吧!不过我感觉这个方法和重置内存、清理内存再启动的效果一样,所以还不如去任务管理器清一下残余进程。 

三、回顾和小结

上文没提到的几点。

我在出现这种错误的时候,其实还有其他不良反应:pycharm可能会秒退,电脑变卡、很多操作未响应,并且QQ也不明不白地报错、chrome浏览器的网页出现out of memory的错误。

之后我打开任务管理器,发现有好几个python.exe的进程在后台占了我大量的RAM,于是在我关闭它们之后,网页就显示正常了,电脑也流畅许多。

这个错误是在上午发生的,然后我中午跑程序的时候发生这个错误,竟然还可以继续训练,只不过obj、box、cls的取值都是nan。

下午再次训练的时候,发现竟然没有发生错误了;虽然那几个参数的值还是nan。

 并且我把batch size的值从1调到4,也没有出现该错误,只是gpu_mem提高了(而我的显卡是GTX 1650 4GB,完全能承载2.42G的内存需求,所以理论上也是不应该出错的)。

小结里我想说什么呢?如果按照上面6种方法调试的过程中,出现电脑卡顿、其他程序崩溃、out of memory的错误时,一定要记得去任务管理器把那些因为程序崩溃没有自动清掉的进程人工kill掉,这样你在开始下一轮调试时以一个更好的电脑状态进行,操作效率、调试成功概率会有所提高。

这篇关于OSError: [WinError 1455] 页面文件太小,无法完成操作、error 1114:动态链接库(DLL)初始化例程失败的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/380017

相关文章

pip install jupyterlab失败的原因问题及探索

《pipinstalljupyterlab失败的原因问题及探索》在学习Yolo模型时,尝试安装JupyterLab但遇到错误,错误提示缺少Rust和Cargo编译环境,因为pywinpty包需要它... 目录背景问题解决方案总结背景最近在学习Yolo模型,然后其中要下载jupyter(有点LSVmu像一个

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Idea实现接口的方法上无法添加@Override注解的解决方案

《Idea实现接口的方法上无法添加@Override注解的解决方案》文章介绍了在IDEA中实现接口方法时无法添加@Override注解的问题及其解决方法,主要步骤包括更改项目结构中的Languagel... 目录Idea实现接China编程口的方法上无法添加@javascriptOverride注解错误原因解决方

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

使用C++实现单链表的操作与实践

《使用C++实现单链表的操作与实践》在程序设计中,链表是一种常见的数据结构,特别是在动态数据管理、频繁插入和删除元素的场景中,链表相比于数组,具有更高的灵活性和高效性,尤其是在需要频繁修改数据结构的应... 目录一、单链表的基本概念二、单链表类的设计1. 节点的定义2. 链表的类定义三、单链表的操作实现四、

Python利用自带模块实现屏幕像素高效操作

《Python利用自带模块实现屏幕像素高效操作》这篇文章主要为大家详细介绍了Python如何利用自带模块实现屏幕像素高效操作,文中的示例代码讲解详,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、获取屏幕放缩比例2、获取屏幕指定坐标处像素颜色3、一个简单的使用案例4、总结1、获取屏幕放缩比例from

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

Python中操作Redis的常用方法小结

《Python中操作Redis的常用方法小结》这篇文章主要为大家详细介绍了Python中操作Redis的常用方法,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解一下... 目录安装Redis开启、关闭Redisredis数据结构redis-cli操作安装redis-py数据库连接和释放增