为什么张量流操作会导致NaN?

时间:2019-07-04 20:13:30

标签: python tensorflow nan loss

当我调用tf.reduce_sum()或tf.nn.l2_loss()时,得到NaN作为结果,为什么会这样?

我尝试过这样的事情:

sess.run(tf.reduce_mean(tf.clip_by_value(forward,1e-10,1.0)))
Out[18]: nan

但是结果也是nan ..

forward
Out[17]: 
array([[0.93465865],
       [0.96060896],
       [0.9346889 ],
       ...,
       [0.97003865],
       [0.9155061 ],
       [0.94954056]], dtype=float32)

expected
Out[10]: 
array([[0.],
       [0.],
       [0.],
       ...,
       [0.],
       [0.],
       [0.]], dtype=float32)

sess.run(tf.reduce_sum(forward))
Out[14]: nan

resultToPrint = tf.nn.l2_loss(forward - expected+1e-8, name="squared_error_cost")
ergebnis = sess.run(resultToPrint)

ergebnis也是NaN。

预期结果不是NaN,而是实际结果。由于我是TensorFlow的新手,所以我非常感谢任何很好的建议和解释,非常感谢! :)

1 个答案:

答案 0 :(得分:0)

检查forward是否具有任何nan值。从nan + float == nan开始,我假设reduce_mean只是沿整个轴传播。