【親測】神經網絡訓練時出現loss=nan或loss不變的解決辦法

       今天用最原始的tensorfow.nn.conv2d構建一個三層CNN網絡並基於MNIST數據集訓練的時候出現了loss=nan的情況,折騰了一晚上,摸索出幾個的解決方案。

       1.在loss函數某個位置添加了1e-10:

cross_entropy = tf.reduce_mean(-tf.reduce_sum(output * tf.log(prediction+1e-10), reduction_indices=[1]))

       2.更換優化器

       3.(最終解決辦法)對tf.nn.conv2d後的輸出進行tf.nn.relu的操作,因爲老版的tf.nn.conv2d不帶激活函數。

       4.  當3行不通的時候用tf.nn.sigmoid。

       5. 調整學習率,一般是調小,小概率是調大。

       6. 檢查是否在最後一層全連接加了激活函數,若是,去掉

       7. 多等一會,有的訓練器碧如SGD下降慢

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章