1. 程式人生 > >深度學習——訓練trick

深度學習——訓練trick

1、資料預處理
資料必須進行預處理以使其zero-mean。
影象處理中有兩種方式中心化:減去均值影象(32,32,3);減去每通道均值(3個值)。

2、梯度檢查
使用中心形式:
使用雙精度:使用單精度浮點數時,可能會出現即使梯度實現是正確的,也會得到比較大的相對誤差(比如1e-2),應該使用雙精度資料型別。
step大小:不是越小越好,當h過小時會出現數值精確度問題。一般在1e-4到1e-6之間修改h。
計算相對誤差:網路越深,誤差越大。所以當對一個深度達10層的神經網路進行梯度檢查時,即使相對誤差為1e-2可能也是可以的。

3、檢查初始損失是否合理
由於引數是隨機的,所以softmax得到的每個類別的結果是1/class_num,由此可以估計出初始的loss值。檢查程式輸出的loss值是否和期望的一致,如果不一致,那麼可能損失函式計算錯誤。

4、確保可以在很少的資料集上過擬合
選擇大概20個數據來訓練網路,那麼損失值應該隨著訓練epoch不斷減小並收斂到0。

5、引數初始化

6、學習率
損失值為nan時幾乎總意味著學習率過大。

參考