转载:https://blog.csdn.net/yy_diego/article/details/83412066
在tensorflow中训练神经网络时,训练到一半,出现Nan in summary histogram for:xxx
这种情况不一定每次都出现,有时候训练时会出现,有时候则不会。
出现这种情况,一般是由以下两种情况造成:
1.Loss的计算采用了
cross_entropy = -tf.reduce_sum(y_*tf.log(y))
如果y的值 = 0,则log(y)则会出错,解决方法是,将上式修改为:
cross_entropy = -tf.reduce_sum(y_*tf.log(tf.clip_by_value(y,1e-10,1.0)))
这样,y的最小值为0的情况就被替换成了一个极小值,1e-10,最大值为1.0,这样就不会出现Nan值了。
2.
一般是由于优化器的学习率设置不当导致的,此时可以尝试使用更小的学习率进行训练来解决这样的问题。