【解决方案】pytorch中loss变成了nan | 神经网络输出nan | MSE 梯度爆炸/梯度消失

在使用PyTorch进行深度学习训练时遇到loss变为nan的问题,通常由学习率过大、数据异常或除以零等引起。尝试调整学习率、检查输入数据及避免除以零无效后,可考虑手动处理梯度爆炸或修改target计算公式以避免inf。通过观察和调试,发现在模型的某个部分导致问题,修正相关计算以确保数值稳定性。
摘要由CSDN通过智能技术生成
loss_func = nn.MSELoss()
loss = loss_func(val, target)

最近在跑一个项目,计算loss时用了很普通的MSE,在训练了10到300个batch时,会出现loss tensor([[nan nan nan nan]]类似的情况。对这个异常的loss进行梯度下降,会导致net的输出变为nan。在网上查了解决方案,都不好用:

  • 学习率过大;
  • loss过小(或者说除以了0 / 计算了 log(0));
  • 存在脏数据输入NaN

试过上述方法,却同样无效的小伙伴可以考虑:

  • 自己手写 loss function ,在临界值处改为线性函数,知乎链接:
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值