CUDA ERROR: device-side assert triggered at 问题及解决思路

cuda error

RuntimeError: cuda runtime error (59) : device-side assert triggered at ...

我之前还以为是因为GPU抽风了引发的BUG,所以第一次没有在意,直接又重新开始运行了一次,但是第二次就发现程序在同样的地方断掉了,这也就想起来我以前看到的一个博客,里面有句话的大概意思是这样的:

每次都在同样的地方出错的程序,问题不一定出在程序上。

顺着这句话的思路我去找了找可能的问题所在,后来发现了这篇文章:https://blog.csdn.net/qq_28660035/article/details/78756657。博主几乎遇到了和我完全一样的问题,只是我在第二次碰到这个问题的时候明确说明了我在计算指标的时候给进去的数据超出了边界。也就是说,在给出label的时候,我的数据集在某个标签上会给进去一个小于零或者大于类别数的一个标签(在我这边是大于类别数了,本来在训练cityscape上的模型,却给出了一个900多的标签,不报错才奇了怪)。

但是目前我还是没有想出来为什么会出现这个问题,只是暂时用了一个方法把这个问题解决了。

label[label >= num_class] = ignore_label
label[label <= 0] = ignore_label

这样一来,能够保证label给进去的时候一定不会存在小于零或者大于类别数的情况。

要是以后弄明白了为什么会出现这个问题的话再来补充说明吧,反正我现在很懵。

不过果然印证了刚才那句话,问题真的不是出在程序上面,而是出在我们的数据中,看来数据检查也是非常重要的。

你可能感兴趣的:(CUDA ERROR: device-side assert triggered at 问题及解决思路)