參見知乎問題!
https://www.zhihu.com/question/275774218
很多框架都會有一個問題,當卷積 weight NaN 之后,卷積的 output 會變成 NaN。然后過了一個 FC,就變成正常的數字了,但是這時候所有 channel 的 output 值相同。
建議打印中間卷積層 output 以檢查是否是這個情況。
相關問題:解決Caffe訓練過程中loss不變問題 - CSDN博客
- loss = −log(p),p=0.5的時候,loss剛好是0.69。看看輸出是否都是一樣的
- 挑幾個層看看,weight值是否NaN
- 檢查是否代碼問題,是否有bug;調參數、learning rate等看看
我以前也碰到過這個問題,0.69, 2.302表明網絡就是在隨機的猜。我遇到過下面兩種原因
1.可能是你的代碼有bug,尤其注意一下讀數據和讀label有沒有搞錯,以及data augmentation的有沒有寫出大問題。
2.你有沒有加weight decay,這點很關鍵。你可以看看你網絡學出的weight尤其是bias,是不是很大(比如100,-80啊這種), 尤其是最后的fc層。