美文网首页
DNN跑mnist,loss变成了nan

DNN跑mnist,loss变成了nan

作者: kelseyh | 来源:发表于2018-01-12 22:00 被阅读619次

    在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

    相关文章

      网友评论

          本文标题:DNN跑mnist,loss变成了nan

          本文链接:https://www.haomeiwen.com/subject/kgrqoxtx.html