簡體   English   中英

訓練期間驗證准確性和驗證損失的差異

[英]Discrepancy in validation accuracy and validation loss during training

我正在用 14k+ 圖像訓練我的 CNN 模型 30 個時期,在第 28 個時期,我發現異常的驗證准確性和損失,如下所示:

 - 67s - loss: 0.0767 - acc: 0.9750 - val_loss: 0.6755 - val_acc: 0.8412
Epoch 27/30
 - 67s - loss: 0.1039 - acc: 0.9630 - val_loss: 0.3671 - val_acc: 0.9018
Epoch 28/30
 - 67s - loss: 0.0639 - acc: 0.9775 - val_loss: 1.1921e-07 - val_acc: 0.1190
Epoch 29/30
 - 66s - loss: 0.0767 - acc: 0.9744 - val_loss: 0.8091 - val_acc: 0.8306
Epoch 30/30
 - 66s - loss: 0.0534 - acc: 0.9815 - val_loss: 0.2091 - val_acc: 0.9433
Using TensorFlow backend.

誰能解釋為什么會這樣?

對我來說它看起來像過度擬合 您的訓練損失接近於零,訓練准確度接近 100,而驗證損失和准確度卻在跳躍。

我建議您調整正則化(dropout、l2/l1、數據增強...)或模型容量。

通常,使用經過調整的正則化的高容量模型是一種很好的做法。

像阿爾卡季。 A 說,它看起來很像過擬合。 這意味着您的模型記住了圖像,因此您的准確性不斷提高。 但是在驗證數據上,您取得了不好的結果。

示例:您記住了 2*8=16 而沒有理解數學中的乘法實際是如何工作的。 所以對於問題 2*8,你給出的答案是 16。但是對於 2*9=? 你不知道 anwser 是什么。

如何避免:

  1. 使用強大的圖像增強,如 imgaug 或增強器。
  2. 使用 Dropout 層
  3. 每個epoch計算並保存2張圖,一張用於訓練數據的准確性,一張用於驗證。通常兩個圖在開始時都在上升,在epoch X之后驗證圖開始跳躍或下降。 這個 epoch 或 epoch-1 是你最后的好狀態。
  4. 使用更多指標,如 ROC AUC
  5. 使用 EarlyStop Callback 監控 val_acc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM