訓練過程曲線分析:acc/loss/val_acc/val_loss【轉載】

前言

 

  • 本文:訓練過程的可視化包括訓練集和驗證集的acc和loss曲線,根據曲線的不同特點進行超參數調節,可以不斷優化網絡,總結以下一些曲線特點。
  • 開發環境:TensorFlow + Keras + Python
  • 問題類型:二分類問題
  • 數據集:訓練集7170個樣本 正負各一半 分類爲1/0,驗證集劃分0.15
  • 獨立測試集共600個樣本 正負各一半

1. 驗證集曲線震盪

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述
分析原因:訓練的batch_size太小
目前batch_size = 64,改成128:

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

改成200:

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

 

可見,增大batch_size 變大,震盪逐漸消失,同時在測試集的acc也提高了。batch_size爲200時,訓練集acc小於測試集,模型欠擬合,需要繼續增大epoch。


總結

 

  • 增大batchsize的好處有三點:

1)內存的利用率提高了,大矩陣乘法的並行化效率提高。
2)跑完一次epoch(全數據集)所需迭代次數減少,對於相同的數據量的處理速度進一步加快,但是達到相同精度所需要的epoch數量也越來越多。由於這兩種因素的矛盾, batch_Size 增大到某個時候,達到時間上的最優。
3)一定範圍內,batchsize越大,其確定的下降方向就越準,引起訓練震盪越小。

  • 盲目增大的壞處:

1)當數據集太大時,內存撐不住。
2)過大的batchsize的結果是網絡很容易收斂到一些不好的局部最優點。
3)batchsize增大到一定的程度,其確定的下降方向已經基本不再變化。
4)太小的batch也存在一些問題,比如訓練速度很慢,訓練不容易收斂等。
5)具體的batch size的選取和訓練集的樣本數目相關。


參考:https://blog.csdn.net/qq_35008279/article/details/90695114
 

發佈了14 篇原創文章 · 獲贊 4 · 訪問量 8516
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章