RuntimeError: CUDA error: device-side assert triggered

目录

项目场景:

问题描述

总结


项目场景:

当我使用AST作为预训练模型,并将输出变成十分类时,出现了下面的问题。


问题描述

模型训练时出现了下面的问题(这里给出报错的部分截图):

        当时找了几篇文章都说是在做分类任务时,训练数据中存在超出分类数目的标签。但是我检查过,分类数目和标签是对应的。后来找到了RuntimeError: CUDA error: device-side assert triggered的解决_思念殇千寻的博客-CSDN博客

 当时就根据作者的总结:

总结一下:

  1. 在Pytorch进行BCELoss的时候,需要输入值都在[0, 1]之间,如果你的网络的最后一层不是sigmoid,你需要把BCELoss换成BCEWithLogitsLoss,这样损失函数会替你做Sigmoid的操作。

  2. 神经网络的输入和输出一般都是有限量,如果你确认你的网络是好的,不妨查看一下网络的输入是不是已经变成了nan

  3. 神经网络的一些网络层是不需要训练的,此时你需要告诉优化器这件事,不然optim会做出一些蠢事让输出值变成nan

发现我使用的是BCELoss,但是AST最后的全连接层不是sigmoid,所以我将损失函数改成了BCEWithLogitsLoss,最后就不报错了。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值