5

我的團隊正在Tensorflow培訓一名CNN,對受損/可接受部件進行二元分類。我們通過修改cifar10示例代碼創建了我們的代碼。在我以前的神經網絡經驗中,我一直訓練,直到損失非常接近0(遠低於1)。但是,我們現在正在使用訓練期間的驗證集(在單獨的GPU上)評估我們的模型,似乎精確度在約6.7k步後停止增長,而在超過40k步後損失仍然穩步下降。這是由於過度配合嗎?一旦損失非常接近零,我們是否應該期望看到另一個精確的尖峯?目前的最高準確度是不可接受的。我們應該殺死它並繼續調整嗎?你有什麼建議?這裏是我們修改過的代碼和培訓過程的圖表。Tensorflow:損失減少,但準確度穩定

https://gist.github.com/justineyster/6226535a8ee3f567e759c2ff2ae3776b

Precision and Loss Images

回答

0

這裏是我的建議,可能出現的問題之一是,網絡開始記憶數據,是你應該增加正規化,

是殺死它,隨損失對於培訓並且具有穩定的驗證精度,這意味着您的網絡容量較低(弱模型)嘗試更深入。

+0

您是否認爲添加更多圖層或圖層會有所幫助? –

+0

首先應用丟失圖層,如果沒有意義,則添加更多圖層和更多的丟棄圖層。也儘量減少您的過濾器尺寸並增加渠道。 –

+0

我們的圖片只有一個頻道(黑白)。你能解釋更多關於增加渠道嗎?你也認爲改變過濾器的數量也會提高準確性嗎?目前是256。 –

2

二元交叉熵損失的減少並不意味着準確度的提高。考慮標籤1,在時間步1,2,3和分類閾值0.5處預測0.2,0.4和0.6。時間步長1和2將導致損失減少但精度不增加。

通過過度訓練數據來確保您的模型具有足夠的容量。如果模型過度擬合訓練數據,通過使用正則化技術避免過度擬合,例如丟失,L1和L2正則化和數據增加。

最後,確認您的驗證數據和訓練數據來自同一分佈。