tensorflow中NaN的问题

本文分享了在使用TensorFlow进行程序调试时遇到的NaN问题及其解决方案。问题源于tf.sqrt函数处理接近全零的张量时导致的导数为NaN。解决办法是在平方根操作前加一个极小值,避免x为零的情况。此外,还推荐了一个知乎上的类似问题讨论,对于理解为何在训练网络时出现loss=nan和固定accuracy值的情况很有帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天帮妹子调试tensorflow的程序,遇到了nan的问题,找了好久终于解决,也没辜负妹子。
最终找到了问题是tf.sqrt, 引自stackoverflow, Why is my loss function returning nan?
解释为:

It was coming from the fact that x was approaching a tensor with all zeros for entries. This was making the derivative of sigma wrt x a NaN. The solution was to add a small value to that quantity.

也就是tf.sqrt(x), x为0导致的nan的问题。 当x为0, 导致导数为NaN。
解决方案: 加一个极小量避免x为0,也就是:

tf.sqrt(x+1e-8)

再给大家推荐一下知乎相似问题,很有借鉴意义。为什么用tensorflow训练网络,出现了loss=nan,accuracy总是一个固定值?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值