当前位置:   article > 正文

RuntimeError: CUDA error: device-side assert triggered 问题的解决思路

runtimeerror: cuda error: device-side assert triggered cuda kernel errors mi

问题如下:

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/89137
推荐阅读
相关标签
  

闽ICP备14008679号