深度學習網路訓練中出現loss函式為nan的原因

2021-08-20 20:11:45 字數 656 閱讀 3026

說法一:

說明訓練不收斂了, 學習率太大,步子邁的太大導致梯度**等都是有可能的,另外也有可能是網路的問題,網路結構設計的有問題。

我現在的採用方式是:

1. 弱化場景,將你的樣本簡化,各個學習率等引數採用典型配置,比如10萬樣本都是同一張複製的,讓這個網路去擬合,如果有問題,則是網路的問題。否則則是各個引數的問題。

2. 如果是網路的問題,則通過不斷加大樣本的複雜度和調整網路(調整擬合能力)來改變。

3. 引數的微調,我個人感覺是在網路的擬合能力和樣本的複雜度匹配的情況下,就是可以train到一定水平,然後想進行進一步優化的時候採用。

4. 引數的微調,樓上說得幾個也算是一種思路吧,其他的靠自己去積累,另外將weights視覺化也是乙個細調起來可以用的方法,現在digits tf裡面都有相關的工具.

說法二:

說法三:

說法四:

深度學習 網路訓練技巧

1.1 學習率 learning rate 學習率 是控制模型學習效率 步長 的權重。學習率的大小區分區別 學習率大 學習率小 學習速度快慢 應用場合 訓練初期 數次epoch過後 缺點1.容易損失過大 2.容易發生振盪 1.容易過擬合 2.收斂速度慢 學習率的設定 在訓練過程中,一般根據訓練輪數設...

深度學習網路模型訓練過程中的Loss問題合集

把資料集隨機分為訓練集,驗證集和測試集,然後用訓練集訓練模型,用驗證集驗證模型,根據情況不斷調整模型,選擇出其中最好的模型,再用訓練集和驗證集資料訓練出乙個最終的模型,最後用測試集評估最終的模型 訓練集 training set 用於訓練模型。驗證集 validation set 用於調整和選擇模型...

訓練網路出現loss為NaN的情況

原因 在學習過程中,梯度變得非常大,使得學習的過程偏離了正常的軌跡。症狀 觀察輸出日誌中每次迭代的loss值,發現loss隨著迭代有明顯的增長,最後因為loss值太大以致於不能用浮點數去表示,所以變成nan。可採取的方法 1.降低學習率,比如solver.prototxt中base lr,降低乙個數...