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

本文探讨了神经网络训练时遇到NAN损失值的常见原因,包括学习率过高、dropout层、梯度爆炸、0作除数、自然对数负数等问题,并提供了相应的解决方案,如调整学习率、移除dropout、使用gradient clipping、检查数据集等。
摘要由CSDN通过智能技术生成

15394afde4a4101db2143ae843383e79.png

训练网络时,最怕出现NAN的情况。运行出现问题了,才知道我们构建的模型是存在一定的问题不是?为此介绍下出现NAN的原因及解决方案:

一.原因

一般来说,出现NAN有以下几种情况:

1.如果在迭代的100轮以内,出现NAN,一般情况下的原因是因为你的学习率过高,需要降低学习率。可以不断降低学习率直至不出现NAN为止,一般来说低于现有学习率1-10倍即可。

2.在设计网络时,添加了dropout层,这也是导致loss出现NAN的原因。为此去掉dropout层即可。

3.如果当前的网络是类似于RNN的循环神经网络的话,出现NAN可能是因为梯度爆炸的原因,一个有效的方式是增加“gradient clipping”(梯度截断来解决)

4.可能用0作为了除数;

5.可能0或者负数作为自然对数

6.需要计算loss的数组越界(尤其是自己,自定义了一个新的网络,可能出现这种情况)

7.在某些涉及指数计算,可能最后算得值为INF(无穷)(比如不做其他处理的softmax中分子分母需要计算exp(x),值过大,最后可能为INF/INF,得到NaN,此时你要确认你使用的softmax中在计算e

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值