多任务联合训练,出现Nan的问题

对于多种任务的联合输出,如果loss出现了Nan,我们首先应该确定到底是哪个任务导致的。其次,可以根据以下可能性或者解决方案来排查Nan。

1)降低学习率,降为原来的0.1——0.001

2)添加L2正则,或者在优化器中添加weight_decay(一般0.1——0.01)

3)排查出现Nan的网络层,对输入的表示进行数据归一化BatchNorm

4)使用了RNN作为特征学习网络,尽量避免在输出后使用ReLU激活函数,可能出现梯度爆炸。可以通过添加“gradient clipping”来解决

5)权重初始化方案有问题,多尝试几种不同的初始化方法

6)dropout参数过小,或者dropout频繁

7)可能出现了log(0)。请注意,我们经常在mask中会使用0进行标记,然后使用log(mask)进行某种剔除,这时候非常可能出现Nan。最好的方法是log(mask+1e-9)进行非0处理。

参考文献:

神经网络训练时损失(loss)不下降常见解决办法以及训练时损失出现nan可能原因以及解决

去除0值和nan_训练神经网络loss出现NAN的解决办法

pytorch训练过程中出现nan的排查思路_风吹草地现牛羊的马的博客-CSDN博客_torch检查nan

模型训练 loss变成NAN的原因解决方法 - 知乎

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值