在pytorch框架下,訓練model過程中,loss=nan問題時該怎麼解決?

JSLS_Hf發表於2018-08-16

當我在UCF-101資料集訓練alexnet時,epoch設為100,跑到三十多個epoch時,出現了loss=nan問題,當時是一臉懵逼,在查閱資料後,我通過減小學習率解決了問題,現總結一下出現這個問題的可能原因及解決方法:

1.  減小整體學習率。學習率比較大的時候,引數可能over shoot了,結果就是找不到極小值點;
減小學習率可以讓引數朝著極值點前進;
2.  改變網路寬度。有可能是網路後面的層引數更新異常,增加後面層的寬度試試;
3.  改變層的學習率。每個層都可以設定學習率,可以嘗試減小後面層的學習率試試;
4.  資料歸一化(減均值,除方差,或者加入normalization,例如BN、L2 norm等);
5.  加入gradient clipping;
6  輸入資料含有髒資料,即NaN,一般當使用實際業務的真實資料時,容易出現髒資料。

相關文章