keras 訓練是 各種loss 變化情況

在使用keras 訓練網絡時,雖然網絡設計好了,數據也加載進去了,但是發現訓練時候總是出現各種各種稀奇古怪的問題。我在這裏就列舉幾個常見的問題。供大家參考一下。當val_loss曲線或val_acc曲線震盪不平滑時的原因可能如下:

1 學習率可能太大

2 batch size太小

3 樣本分佈不均勻

4 缺少加入正則化

大家可以在這幾個方面去進行調整,一步一步的調整,先調整學習率,然後再調整batch size,一般這兩種情況比較多,很容易就可以解決。如果還不行,再考慮一下val 集的數據樣本和訓練集的樣本是不是同樣的分佈。從這幾方面進行考慮。

另外大家要學會從loss和acc的變化來判斷網絡學習的情況。可能的幾種情況如下。

  1. train loss 不斷下降,test loss不斷下降,說明網絡仍在學習;
  2. train loss 不斷下降,test loss趨於不變,說明網絡過擬合;
  3. train loss 趨於不變,test loss不斷下降,說明數據集100%有問題;
  4. train loss 趨於不變,test loss趨於不變,說明學習遇到瓶頸,需要減小學習率或批量數目;
  5. train loss 不斷上升,test loss不斷上升,說明網絡結構設計不當,訓練超參數設置不當,數據集經過清洗等問題。 

另外當訓練時出現NAN 時大家看看自己的網絡是不是設計的有問題,網絡設計的是否過大了,導致梯度傳遞時丟失了。

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