神經網絡常見錯誤(Most Common Neural Net Mistakes)
本文總結自Andrej Karpathy的一篇推特及其評論區。
原推特鏈接
- 你沒有嘗試在一個batch上首先達到過擬合
- 你忘記轉換train和eval模式
- 你忘記在.backward()之前設置.zero_grad()
在Pytorch中
- 你向損失函數輸入了一個經過softmax後的輸出,但是可能你的損失函數需要一個原始概率作爲輸入
- 你沒有在使用BatchNorm時將你的Linear層或Conv2d層的偏差設爲False
即設置bias=False
- 你錯誤的使用了.view() 和.permute()
錯誤的認爲它們是一個東西
- 初始學習率設置的過於大了
- 錯誤的數據增強(data augmentation)
如:涉及左右的視覺任務使用隨機mirror進行數據增強
- 你忘記將做完比較的tensor轉回爲float()類型,或加減byte()類型然而結果超出0-255的範圍
- 忘記打亂訓練集的數據(shuffle),導致一個batch內的數據有較強的關聯
- 使用了錯誤的normalization,或訓練和測試過程沒有使用同樣的normalization
- 在錯誤的維度上使用softmax或其他的loss
- loss項使用了錯誤的符號
- 忘記在求和、平均、取最大值等操作是指明維度(dim/axis)
如在平均一個batch的loss時
- fine-tuning或feature extraction時:數據預處理不一致
(如均值、方差與預訓練集不同)