网络nan的原因_深度学习网络训练中出现nan的原因分析

当在深度学习模型训练过程中遇到NaN错误,可能导致训练准确率骤降。这通常由log函数输入负数或0,学习率过高,或者脏数据引起。解决方案包括使用tf.clip_by_value限制log函数的输入,降低学习率,以及清理训练数据。确保数据质量并调整训练参数可以有效避免NaN问题。
摘要由CSDN通过智能技术生成

nan:Not a Number

错误后果:造成训练准确率的断崖式下跌

两种出现地点:

1)在loss函数中出现nan

出现原因:一般是因为tf中的log函数输入了‘负数’或‘0’值(出现log(0)*0的情况)

解决方法:使用tf.clip_by_value限制tf.log的输入值

例如: cross_entropy = -tf.reduce_sum(y_*tf.log(tf.clip_by_value(y,1e-8,tf.reduce_max(y))))

cross_entropy = -tf.reduce_sum(y_*tf.log(tf.clip_by_value(y,1e-8,1e+100)))

cross_entropy = -tf.reduce_sum(y_*tf.log(y+1e-8))

safe_log = tf.clip_by_value(some_tensor, 1e-10, 1e100)

2)在更新网络时出现nan

出现原因:一般是学习率设置过高导致的(-->梯度值过大-->梯度爆炸)

解决方法:调低学习率

3)脏数据

出现原因:训练数据中存在脏数据,不适应当前网络,输出错误数值

解决方法:人工清理数据

更多细节可参考:

blog.sina.com.cn/s/blog_6ca0f5eb0102wr4j.html#cmt_5A0D972D-72F73880-BE365276-926-938

https://www.zhihu.com/question/49346370

https://www.zhihu.com/question/52242037/answer/184101547

https://www..com/bonelee/p/8603750.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值