相关文章推荐
逆袭的领结  ·  Selenium Python ...·  1 年前    · 

问题如下:

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)其实就是一个小问题,但是搞了老半天,在此记录一下。解决之后的实际情况:

问题如下:RuntimeError: CUDA error: device-side assert triggeredCUDA 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. import tornado.ioloop import tornado.web from tornado.httpclient import HTTPClient, AsyncHTTPClient class MainHandler(tornado.web.RequestHandler): def get(self): h_c = HTTPClient() res = h_c.fetch("http://www.baidu.com") # print(res) # pass
跑模型时出现 Runtime Error : CUDA out of memory.错误 查阅了许多相关内容,原因是:GPU显存内存不够 简单总结一下 解决 方法: 将batch_size改小。 取torch变量标量值时使用item()属性。 可以在测试阶段添加如下代码: with torch.no_grad(): # 停止自动反向计算梯度 https://wisdomai.xyz/tool/pytorch/archives/2301 https://ptorch.com/news/160.html 作者:菜叶儿掉啦
参考资料:自己debug   首先,我报错的 问题 的文本是: Runtime Error : CUDA error : device -s ide assert trigger ed 以及 Assert ion `input_val >= zero && input_val <= one` fail ed 把这两个文本放在前面以便搜索引擎检索。下面说一下我的 解决 方案,因为 问题 解...
场景:我是使用jupyter notebook运行pytorch在 cuda 上跑的时候遇到的 问题 。 完美 解决 - Runtime Error : CUDA error : device -s ide assert trigger ed : 这里提到说是数目类别的 问题 ,比如四类分类,理论上标签one-hot最大值是3,出现了4就会报这个错误。 上面的本质说法和记录一个 error CUDA error : device -s ide assert trigger ed 是一样的:就是一个检索越界的 问题 。 我的 问题 和前面的都不一样,而且c
点进来的朋友你好啊,先别说,让我猜猜,你是不是正在写一个NLP模型?它是不是有lstm,或者transformer,或者textcnn?哈哈是不是猜中啦。你现在一定很着急,看了各种博客,说是下标越界~,可是找来找去,真的找不出哪里出界了?打印出来各个都在标签限制内呢? 别着急,我相信看了我的博客有很大概率可以 解决 你的难题。 那就是———————————————————— 你的emb ed ing中词的总数设小啦! 在函数 nn.Emb ed ding(vocab_size, emb ed ding_dim
Runtime Error : CUDA error : device -s ide assert trigger ed CUDA kernel error s might be asynchronously report ed at some other API call,so the stacktrace below might be incorrect. For debugging cons ide r passing CUDA _LAUNCH_BLOCKING=1. 可能的情况:有地方数组越界了(下标大于原长或下标小于0
runtime error : cuda error : device -s ide assert trigger ed CUDA (Compute Unifi ed Device Architecture)在执行GPU计算时发生了错误的提示。在GPU计算过程中,如果程序发现了不符合预期的操作或者输入,就会触发 assert (断言)来中断程序的执行并输出错误提示。 常见的导致 runtime error : cuda error : device -s ide assert trigger ed 的原因包括: 1. 内存 问题 - 在GPU内存中分配了太多的空间,或在GPU上执行的程序没有释放GPU内存。建议检查代码中内存分配和释放的情况。 2. 计算 问题 - 在GPU上执行的程序可能存在错误的计算,例如在浮点计算中做除以0等非法操作。建议检查代码中的计算逻辑。 3. 数据不连续或不规范的情况 - CUDA 只支持连续的数据内存,如果数据内存不连续或不在正确的内存位置,会导致 assert (断言)触发。 4. 版本不匹配 - CUDA 编译器、 CUDA 驱动程序和 CUDA 运行库的版本必须匹配。如果版本不同,可能会导致运行错误。 为了 解决 这个 问题 ,我们需要逐步排除上述可能导致 runtime error : cuda error : device -s ide assert trigger ed 异常的原因。首先检查代码中的内存管理,确保没有内存泄漏的 问题 。然后,检查计算逻辑是否正确,并保证传入的数据是规范的。最后,确保 CUDA 开发环境的版本匹配。