錯誤記錄 - 訓練深度學習模型loss爲nan的原因

前言

最近師弟在實際業務中訓練深度學習模型時遇到個問題:在大樣本訓練模型時候的loss爲nan,嘗試了各種方法也沒有什麼起色,最終一起分析了一番擬確定了原因,這邊就分享下可能的原因可供分析調整~

原因

1.模型問題
  • 網絡結構設計問題

    通過弱化場景,簡化樣本的方式去檢查是否爲網絡的問題

  • 損失函數設置不合理

  • 激活函數選擇不當

  • 參數初始化問題

2.數據問題
  • 數據需歸一化

    • 減均值
    • 除方差
    • 加入normalization(BN\L2 norm等)
  • 數據標籤不在[0, num_classes)範圍內

  • 訓練樣本存在髒數據

    這個是和師弟最終確定的原因,因爲在實際業務中的真實數據需要耗費較多的時間去處理,不像open dataset那樣已經幫你處理的乾乾淨淨,所以如上述的方法一一檢查過了還是沒有成效的話,一定要好好地檢查下數據。

3.訓練問題

loss爲nan的說明loss發散,這個時候需要考慮下梯度爆炸的可能,那麼相應的解法方式如下:

  • 調小學習率lr
  • 調小batch size
  • 加入gradient clipping
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章