一、问题描述
如题所示,在训练网络时报错
cuda error:device-side assert triggered
。
二、解决方法
(1)torch.backends.cudnn.enable =True, torch.backends.cudnn.benchmark = True
(2)代码逻辑问题:
1.检查代码,看是否是训练时loss成为nan,可以更换词向量的拼接方式等。
2.如果是分类任务,可能是标签个数不对应,特别是还有
index >= -sizes[i] && index < sizes[i] && “index out of bounds
的提示时。
(3)出现device-side assert triggered的BUG不能只关注报错代码
(4)可以直接打开pytorch的源码:如发生
binary_cross_entropy_out_cuda()
断言,可能是训练到一个时间点时,变成nan无穷值,这样即使再输入
sigmoid
最后一层,最终的结果也不会是0到1之间,可以将
BCELoss
改为
BCEWithLogitsLoss
。
(5)也可以直接先使用CPU跑代码,可以显示出直接用GPU跑代码没有显示的错误。
Reference
[1] RuntimeError: CUDA error: device-side assert triggered的解决
[2] 关于cuda error:device-side assert triggered的3种解决办法
版权归原作者 山顶夕景 所有, 如有侵权,请联系我们删除。