tensorflow 訓練網絡loss突然出現nan的情況


1、問題描述:開始訓練一切都是那么的平靜,很正常!

  突然loss變為nan,瞬間懵逼!

2、在網上看了一些解答,可能是梯度爆炸,可能是有關於0的計算。然后我覺得可能是關於0的吧,然后進行了驗證。

3、驗證方法:因為我使用的是softmax loss, 我直接打印每一步的輸出向量中的最大值即:

print(np.max(y.eval({x:data})))

發現最大值接近1甚至有的就是1.0,可想而知,其他維度都接近0了,那么我們來看公式:

  交叉熵loss: y_ * log(y) 
  當0*log(0) 的時候, 則會出現nan。

原因如此解決辦法應該很多吧!

我使用的加正則化損失,參考:https://www.jianshu.com/p/6ffd815e2d11

也可以在損失中加一個很小的正值

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM