深度学习和日常代码中遇到的报错汇总及解决方案,持续更新中。。。。

这篇具有很好参考价值的文章主要介绍了深度学习和日常代码中遇到的报错汇总及解决方案,持续更新中。。。。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文是深度学习和日常代码中遇到的报错汇总,因时间比较久,暂时都没有图片,只有文字描述。解决方案也大多参考网上的解决方案,有些有用,有些没有效果,本文章中的问题,也仅是本人遇到的问题,使用列举的方案已经解决。

1、报错"RuntimeError: Boolean value of Tensor with more than one value is ambiguous"。

处理:调用的方法是一个类,需要先进行实例化在进行调用

2、神经网络模型训练过程中,损失和输出都是nan

处理:尝试了网上大家的方式,都没有解决这个问题,后来将pytorch和cuda都降低了版本,问题解决了(要调试网络,看具体在那一步导致的loss为nan)。

网络上找到的其他人总结的解决方式:

1)如果在迭代的100轮以内,出现NaN,一般情况下的原因是因为你的学习率过高,需要降低学习率。可以不断降低学习率直至不出现NaN为止,一般来说低于现有学习率1-10倍即可。

2)如果当前的网络是类似于RNN的循环神经网络的话,出现NaN可能是因为梯度爆炸的原因,一个有效的方式是增加“gradient clipping”(梯度截断来解决)

3)可能用0作为了除数;

4)可能0或者负数作为自然对数

5)需要计算loss的数组越界(尤其是自己,自定义了一个新的网络,可能出现这种情况)

6)在某些涉及指数计算,可能最后算得值为INF(无穷)(比如不做其他处理的softmax中分子分母需要计算exp(x),值过大,最后可能为INF/INF,得到NaN,此时你要确认你使用的softmax中在计算exp(x)做了相关处理(比如减去最大值等等))

7)若模型训练开始时出现,增大或减小batch_size的值,需要增大或减小后去跑模型观察情况,是否还会出现;优化神经网络结构(增加或减少网络深度)

8)若模型运行过程中出现,需要考虑是否是梯度爆炸引起,需要调低学习率或对梯度进行优化。

特殊情况,换激活函数

  1. 卷积在使用BN之后,可以换成sigmoid或tanh激活函数

3、报错cuda内存不足

解决方式:

1)减小batch_size

2)减小网络

4、报错:AttributeError: cannot assign module before Module.__init__() call

原因:

1、引用了父类Module,但是在初始化中没有对父类的初始化函数进行重构

解决方式:

1、在init初始化中,使用super()对父类的初始化函数进行重构

5、训练时报错:cuDNNerror:CUDNN_STATUS_EXECUTION_FAILED

解决方式:

1)在循环的最后加上 torch.cuda.empty_cache()

2)检查在代码中是否有SummerWrite(),有的情况禁用相关代码在进行调试

3)在代码中加上os.environ["CUDA_LAUNCH_BLOCKING"] = "1"

6、报错RuntimeError: CUDNN_STATUS_MAPPING_ERROR

解决方式:

1)在尝试在代码开始部分加入如下2个代码:

torch.backends.cudnn.enabled = True

torch.backends.cudnn.benchmark = True

7、网络模型报错:Expected more than 1 value per channel when training, got input size torch.Size

原因:因为模型中用了batchnomolization,训练中用batch训练的时候当前batch恰好只含一个值,而由于BatchNorm操作需要多于一个数据计算平均值,因此造成该错误

解决方式:

1、加大Batch_Size

2、网络设置eval模式

3、去掉网络中的batchnormal

  1. 调整输入,使batchnormal不止是1个值

8、YOLOv3加载pt文件报错RuntimeError: PytorchStreamReader failed locating file data/4: file not found

原因:pt文件损坏,无法加载

解决方式:重新训练

9、神经网络运行时报错RuntimeError: Found dtype Double but expected Float”

原因:数据精度不一致导致的问题

处理方式:1、检查所有数据的精度是不是一样(标签、模型输入和输出、损失函数的输入和输出数据的精度),不一样的情况,需要修改为相同精度

10、加载参数文件报错EOFError: Ran out of input

原因:​EOFError​​是​​IOError​​的子类。表示没有按照正确的读写模式操作文件,会报此错。

本人是因为训练过程中突然断电,有电后重新加载参数进行训练时报的这个错误

解决方式:

1、本人解决方式是删除参数文件,并重新跑

  1. 网上有解决方式说在Dataloader中,将num_workers设置为0就可以。本人尝试无效,猜测可能是造成原因不同,导致该操作无效。

11、yoloV5训练过程中报错::OSError: [WinError 1455] 页面文件太小,无法完成操作。

原因:

1)环境的虚拟内存不足

2)batch-size太大,

3)数据问题

解决方式:

前2种情况可以参考博客:https://blog.csdn.net/weixin_53660567/article/details/126635843,一般前两种情况遇到比较多。

1)增大环境的虚拟内存(环境所在盘的虚拟内存)

2)调小batch-size,或者将workers设置为0

  1. 处理数据

12、yoloV5训练过程中报错:NotImplementedError: Could not run ‘torchvision::nms‘ with arguments from the ‘CUDA‘ backend.

原因:1、torch和torchvision版本不同,比如torch是支持cuda的,但是torchvision不支持cuda

2、torch和cuda版本不对

解决方式:

1、卸载torch和torchvision,重新一起安装 相同的torch和torchvision

2、卸载torch和cuda,并分别重新安装,使版本匹配

13、使用mac电脑运行时报错:"histogram_cpu" not implemented for "long"

原因:不支持long类型的运算

解决方式:将报错代码输入数据类型设置为float,我是在使用torch.histc()方法时出现的错误。

14、对图片进行操作时报错“AttributeError: ‘numpy.ndarray‘ object has no attribute ‘convert'”。

原因:此时图片的数据方式是numpy的array,不能进行图片相关操作,需要转换为图片数据

解决方式:将图片数据转化为Image的数据格式在进行图片操作。转换方式:Image.fromarray(np.uint8(img))

15、将numpy.ndarray转换为Image图片数据时,报错“TypeError: Cannot handle this data type: (1, 1, 512), |u1”。

原因:需要检查numpy.ndarray的数据的格式,是否是(H,W,C)格式,如果是(C,H,W)格式的话,需要换轴处理

解决方式:将numpy.ndarray数据进行换轴操作(img = img.transpose((1, 2, 0))),换成(H,W,C)格式,换轴之后在进行转换

16、使用神经网络训练/测试图片时,会报错“RuntimeError: Given groups=1, weight of size [64, 3, 7, 7], expected input[1, 4, 224, 224] to have 3”。

原因:图片通道数发生变化导致,例如训练时使用的是3通道图片进行训练,测试时使用单通道图片进行测试

解决方案:对传入的图片进行处理,转为单通道图片或转为3通道图片,根据实际项目调整。

17、对PIL的Image图片进行抠图时报错“TypeError: type numpy.ndarray doesn‘t define __round__ method”。

原因:抠图时,传入的坐标值为nump.ndarray ,没有__round__这个方法

解决方案:使用np.round(data)对数据进行处理之后,在传入到抠图的方法中即可。

18、pytorch操作张量时报错“IndexError: too many indices for tensor of dimension 1”。

原因:张量中存在多个tensor张量列表,导致在dim=1的轴上进行索引时,存在多个张量数组,程序报错,数据格式类似如下:

tensor([
tensor([1]),
tensor([b])])

解决方式:检测前面步骤的数据处理,是否存在问题,可以参考以下处理方式:

1、使用索引方式获取数据,一次性获取所有所需要数据

2、使用cat将不同张量数据整合为一个张量数据

  1. 将张量数据转化为numpy数据,在将数据组合到一起之后,在转为tensor张量

19、神经网络开始训练的时候计算损失报错:untimeError: 0D or 1D target tensor expected, multi-target not supported。

解决方式:

1、若使用的是NllLoss损失函数,则标签的损失不需要处理成one-hot编码格式,只需要是0或1维的标签数据就可以。

2、若是其他损失函数,需要检查计算损失的2个张量的大小和形状是否一致

20、使用cv2处理图片时,报错:error: (-215:Assertion failed) m.dims >= 2 in function 'cv::Mat::Mat'。

分析:图片或文件路径问题,可以将cv2.imread()的图片打印出来,看返回是否有数据还是None,我的情况是返回的是None。

解决措施:

1)如果是路径问题,处理图片路径

2)如果是图片问题,可以尝试使用PIL打开图片,在转换成cv2格式进行操作

from PIL import Image
import cv2

img = cv2.imread(file_path)
#将cv2打开的图片转换为PIL格式的图片
img_pil = Image.fromarray(np.asarray(cv2.cvtColor(crop_img, cv2.COLOR_BGR2RGB)))
#将PIL打开的图片转换为CV2 格式
img1 = Image.open(file_path)
img_cv2 = cv2.cvtColor(numpy.asarray(img1), cv2.COLOR_RGB2BGR)

21、使用PIL处理图片时报错:OSError: broken data stream when reading image file

解决措施:在代码文件开始,添加该代码:ImageFile.LOAD_TRUNCATED_IMAGES = True,我遇到这个问题,是因为处理的图片超出了上限,导致截断数据流,报出这个错误。

22、使用tensorboard过程中遇到报错:ValueError: Duplicate plugins for name projector

原因:安装包下面存在多个tensorboard,删除/卸载一个就好

解决措施:浏览了网络上很多的解决方式都不管用,最后使用网络上的一段代码,查看了tensorboard的包,发现有一个~ensorboard的包,把这个包删除之后就好了(一般和tensorboard的包在同一个位目录内,我的是在D:\ProgramData\anaconda3\Lib\site-packages里面)。文章来源地址https://www.toymoban.com/news/detail-421487.html

#查看安装的包:
import pkg_resources

for entry_point in pkg_resources.iter_entry_points('tensorboard_plugins'):
    print(entry_point.dist)

到了这里,关于深度学习和日常代码中遇到的报错汇总及解决方案,持续更新中。。。。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python 深度学习 解决遇到的报错问题3

    目录 一、AttributeError: The vocab attribute was removed from KeyedVector in Gensim 4.0.0. 二、ImportError: cannot import name \\\'logsumexp\\\' 三、FutureWarning: Passing (type, 1) or \\\'1type\\\' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / \\\'(1,)type\\\' 四、ImportError: numpy.core.multiarray failed

    2024年02月10日
    浏览(41)
  • python 深度学习 解决遇到的报错问题9

    本篇继python 深度学习 解决遇到的报错问题8-CSDN博客 目录 一、can only concatenate str (not \\\"int\\\") to str 二、can\\\'t convert np.ndarray of type numpy.object_. The only supported types are: float64, float32, float16, complex64, complex128, int64, int32, int16, int8, uint8, and bool. 三、module \\\'d2l.torch\\\' has no attribute \\\'train_ch3\\\' 四、

    2024年02月05日
    浏览(45)
  • python 深度学习 解决遇到的报错问题8

    本篇继python 深度学习 解决遇到的报错问题7-CSDN博客 目录 一、OSError: [WinError 127] 找不到指定的程序。 Error loading \\\"D:my_ruanjianconda-myenvsdeeplearninglibsite-packagestorchlibcaffe2_detectron_ops.dll\\\" or one of its dependencies. 二、proj.db contains DATABASE.LAYOUT.VERSION.MINOR = 0 whereas a number = 2 is expecte

    2024年02月05日
    浏览(44)
  • Android 打包可能遇到的报错

    问题一:com.android.ide.common.signing.KeytoolException: Failed to read key testxlk from store “E:AndroidAndroid Keystestkey.jks”: Invalid keystore format 升高gradle JDK版本,我这里用了JDK11 问题二:Integrity check failed: java.security.NoSuchAlgorithmException: Algorithm HmacPBESHA256 not available 在解决问题一时升级到JDK1

    2024年04月11日
    浏览(56)
  • linux安装nginx遇到的报错

    1、Linux如何修改只读文件(以设置自动连网为例) vim /etc/sysconfig/network-scripts/ifcfg-ens33 然后提示 E45:已设定选项“readonly”(请加!强制执行)  如果需要强制修改,可以使用,注意空格 :w !sudo tee % 2、安装报错 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached host

    2024年02月15日
    浏览(49)
  • MySQL Shell备份恢复可能会遇到的报错

    使用MySQL Shell进行备份和恢复的方法参见MySQL Shell 8.0的Dump Utility备份与恢复。 MySQL Error 1226总是发生在备份/恢复开始的时候。 🕷报错信息: 🐦报错原因: 使用MySQL Shell备份或恢复的并发线程数 threads 大小超过了当前备份用户的最大并发连接数 max_user_connections 。 🐟解决办法

    2023年04月12日
    浏览(78)
  • 微信小程序开发(遇到的报错和注释)

      一开始验证文章出错了,一直运行不起来,取消设置,可以正常调用。 页面小程序窗口组件部分:navigationbar导航栏区域,background背景区域(默认不可见,下拉才显示)、页面的主题区域(用来显示wxml中的布局)  wxss(weixin style sheets)小程序样式语言{小程序中的样式文件一

    2024年02月10日
    浏览(37)
  • 在安装和配置DVWA渗透测试环境遇到的报错问题

    前面的安装我参考的这个博主:渗透测试漏洞平台DVWA环境安装搭建及初级SQL注入-CSDN博客 这里提示一下,我使用的是PHPstudy集成环境(mysql,Apache),博主提到的php.in文件  位置在设置里面,点击php.ini 其他的错误按照博主的改。 解决方法参照博主:Dvwa遇到 Could not connect to the d

    2024年02月08日
    浏览(50)
  • Ubuntu sudo apt update 过程中遇到的报错解决

    E: 仓库 “https://mirrors.aliyun.com/docker-ce/linux/ubuntu kylin Release” 没有 Release 文件。 sudo apt update:仓库 “http://mirrors.aliyun.com/docker-ce/linux/debian ulyana Release” 没有 Release 文件 Linux更换国内源–解决终端下载速度慢的问题 在使用 sudo apt update 更新源时,发现报了一大堆错。例如 起初我

    2024年02月02日
    浏览(88)
  • Springboot集成Redis常见的报错和解决方案

    during request: java.io.IOException: 远程主机强迫关闭了一个现有的连接。 项目时基于 若依框架 开发,在生产环境报错: io.lettuce.core.protocol.CommandHandler : null Unexpected exception during request: java.io.IOException: 远程主机强迫关闭了一个现有的连接。 详细日志信息如下: 日志中容易看出报错

    2024年02月08日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包