Bug小能手系列(python)_13: RuntimeError: CUDA error: device-side assert triggered CUDA kernel errors might

Python运行代码报错

  • 0 引言
  • 1 报错原因
  • 2 解决思路
  • 3. 总结

0 引言

在运行 Python 代码时出现报错:

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.

注意:报错对应的代码部分与实际出现错误的部分是不同的。具体报错截图如下所示:
Bug小能手系列(python)_13: RuntimeError: CUDA error: device-side assert triggered CUDA kernel errors might_第1张图片

1 报错原因

当代码中存在数组越界或者标签不一致的时候就会出现该错误。这里说的标签不一致的意思是:模型输入的标签应该是0-3,但是你实际输入的标签是1-4
当出现该错误时,有时提示的代码错误的位置和实际位置是不一致的。

2 解决思路

当出现该报错时,首先在代码加载库包部分加入下面两行代码(首先找到代码实际报错位置):

import os
os.environ['CUDA_LAUNCH_BLOCKING'] = '1'

加入该代码后,再次运行代码,此时报错位置为实际报错位置

然后,再分析代码报错原因
Bug小能手系列(python)_13: RuntimeError: CUDA error: device-side assert triggered CUDA kernel errors might_第2张图片
这里给出了我代码的实际报错位置:
Bug小能手系列(python)_13: RuntimeError: CUDA error: device-side assert triggered CUDA kernel errors might_第3张图片
然后,分析是否是数据维度不匹配或者标签错误
最后,分析出是标签错误,并成功运行代码!!!

最后,也有一些是别的原因导致的错误。
例如:在加载数据时,num_workers 需要设置为0

DataLoader(dataset = dataset,batch_size = batch_size,num_workers = 0,shuffle = True)

3. 总结

总的而言,感觉出现该错误主要是因为标签或者数组越界的问题。如果大家有什么解决方案的话可以评论留言,这边会根据最新的内容进行更新!!!

如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦。

你可能感兴趣的:(Bug小能手,深度学习,bug,python,开发语言)