2017-06-19 103 views
1

我正在使用TensorFlow分類使用LeNet網絡的圖像。我使用AdamOptimizer來最小化成本函數。當我開始訓練模型時,我可以觀察到訓練準確性和驗證準確性以及成本正在發生變化,有時會減少,有時會增加。Tensorflow:何時停止由於最佳(最低)成本而進行的培訓?

我的問題:我們應該什麼時候停止培訓?我們如何知道優化器會找到最低成本?我們應該做多少次迭代訓練?我們可以設置一個變量或條件以最低的成本停止嗎?

我的解決方案是定義一個全局變量(min_cost),並在每次迭代中檢查成本是否降低,然後保存會話並用新成本替換min_cost。最後,我將以最低的費用獲得保存的會話,

這是一個正確的方法嗎?

由於提前,

回答

1

雖然訓練神經網絡,主要是一個目標誤差一起與迭代訓練的最大量限定。例如,目標錯誤可能是0.001MSE。一旦達到這個錯誤,訓練就會停止 - 如果在最大迭代次數後還沒有達到這個錯誤,訓練也會停止。

但似乎你想訓練,直到你知道網絡不能做得更好。像您所做的那樣保存「最佳」參數是一種很好的方法,但要意識到,一旦達到了某種最低成本,誤差就不會再有這麼大的波動。它不會像錯誤突然顯着上升,所以並不是完全有必要保存網絡。

沒有「最低成本」這樣的東西 - 網絡總是試圖去一些當地的最低標準,它會一直這樣做。你(或算法)沒有辦法確定沒有更好的錯誤可以達成。

tl; dr - 只需設置一個目標合理的目標誤差以及最大的迭代次數。

+0

所以,在第一段中,你說我需要訓練模型以進行非常多的迭代,它會在某個點收斂,對嗎? – Mohammad

+0

好的,你必須設定一個合理的錯誤目標 - 迭代次數應該是你知道網絡應該收斂到最小值的一個數量。最大迭代是目標錯誤的回退。 –

+0

因此,我應該通過試錯法找到最大迭代和目標錯誤? – Mohammad