DNN跑mnist,loss变成了nan

2018-01-12  本文已影响619人  kelseyh

在tensorflow上用自己写的DNN跑mnist数据集,跑着跑着,loss变成了nan,

在8000轮的时候,测过accuracy有97%,但是跑到10000多轮,loss变成了nan。

把weights打印出来一看,也全部都是nan了。

最后stackoverflow解决了问题:

是因为cross entropy写得有风险:

这样写有风险,因为y_pred有可能出现0

cross_entropy = -tf.reduce_sum(y_*tf.log(y_pred))

保险的写法是这样的:

cross_entropy = -tf.reduce_sum(y_*tf.log(tf.clip_by_value(y_conv,1e-10,1.0)))

外面加不加tf.reduce_mean()随意。

另外,在查的过程中,发现造成loss变成nan的原因有很多很多,如果一开始的初始化没有弄好,容易造成weights变成nan。

参考资料:

https://stackoverflow.com/questions/33712178/tensorflow-nan-bug?newreg=c7e31a867765444280ba3ca50b657a07

https://stackoverflow.com/questions/37448557/why-are-my-tensorflow-network-weights-and-costs-nan-when-i-use-relu-activations

上一篇 下一篇

猜你喜欢

热点阅读