RuntimeError: CUDA error: device 您所在的位置:网站首页 白猫图片唯美可爱 RuntimeError: CUDA error: device

RuntimeError: CUDA error: device

2023-03-31 07:56| 来源: 网络整理| 查看: 265

问题如下:

1.问题如下:

RuntimeError: CUDA error: device-side assert triggered CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect. For debugging consider passing CUDA_LAUNCH_BLOCKING=1.

2.解决方案:

(1)一开始我在网上查找解决方案,结果大部分网友的解决思路都是类似于这样:

         有人说是造成这个问题的原因就是在做分类任务时,训练数据中存在超出分类数目的标签。举个例子:如果你一共设置了8个类,但是训练数据中的标签里出现了9,就会报这个错误。那么问题来了,这里有一个陷阱。训练数据中的标签含0也会报上述错误。这个就非常诡异了。一般我们都从0开始数,但是在pytorch里0以下的类别标签都是要报错的。所以如果类别标签从0开始,要给所有类别标签都加上1。

         pytorch会自己扫描train_path下的每一个文件夹(每类图片都位于其类别的文件夹下),并将每一个类映射成数值,比如有4类,类别标签就是[0,1,2,3]。在进行二分类的时候的确是将标签映射成了[0,1],但是在进行4分类的时候,标签却映射成了[1,2,3,4],因此就会报错。

(2)实际上我按照这种思路去解决并没有用,依然报错同样的问题。后来我仔细查找代码,发现最后原来不是什么标签与分类的类别对不上之类的,而是最后一层网络的代码有问题,你自己要输出是几分类,就应该填写几分类。

self.outlayer = nn.Linear(256 * 1 * 1, 3) # 最后的全连接层 # 别人是3分类,而我的是5分类,改正这里就解决了 self.outlayer = nn.Linear(256 * 1 * 1, 5) # 最后是全连接层

(3)其实就是一个小问题,但是搞了老半天,在此记录一下。解决之后的实际情况:



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有