回覆列表
-
1 # NC少年
-
2 # muzilovemusic
我訓練過一些深度學習模型。
按照我的經驗,如果我有這樣一個問題。那麼我會按照如下流程解決問題。
1.看懂模型
模型中有大量公式,首先你要看懂它大致做了什麼東西你才好debug。
2.看程式碼
主要看loss函式是否寫錯,整個模型搭建是否有錯。大致過程是:loss函式debug,捋一遍程式碼,在必要地方新增輸入輸出語句檢視執行情況。
3.如果看不懂模型,看不懂程式碼,那就找原作者,看他是否有辦法。如果是github是clone的,那麼可以提issue,讓廣大網友幫你解決,還可能遇到和你相同問題的人 。
可能是overtfitting或是訓練環節出錯了。需要結合training loss,即訓練集誤差一起來排錯。
模型過擬合如果訓練集誤差在穩步下降,而驗證集誤差反而上升,應該是模型過擬合了。模型過於複雜,而資料量太小,學習的模型過度去擬合訓練集。解決方案是增大dropout或降低模型容量。或者想辦法加大資料量。
程式碼前傳或後傳有bug如果訓練集誤差不下降,可能你的訓練程式碼本身都有bug。這種情形下,沒有必要看驗證集誤差。除錯程式碼吧,比如前傳損失函式的計算,後傳梯度的計算,某個環節出錯了。如果你用的不是深度學習框架,自己寫的後傳程式碼,那可能要透過數值方法計算梯度,進行對比,排查bug。