1. 程式人生 > >NN模型設定--減小訓練時的記憶體/視訊記憶體佔用

NN模型設定--減小訓練時的記憶體/視訊記憶體佔用

1)kennel_stride

  一種技術是使用較大的步幅來進行卷積核心,也就是說,我們應用不是每個畫素的平鋪卷積,而是每兩個或四個畫素(stride為2或4),以便產生較少的輸出資料。
  這通常用於輸入層,因為這些使用大部分記憶體。
  當然,大stride通常是配合大的kenel_size一起使用;而使用大的kenel_size是為了擴大感受野。
  為什麼在第一層的stride要這麼大?

2)1*1kennel_size

  減少記憶體佔用的另一個技巧是引入1×1的卷積核心層,減少通道。例如64x64x256輸入可以通過96 1×1核心減少到64x64x96的輸入。

3)pooling

  一個明顯的技術是池化。一個2×2的池化層可以將該層的資料量減少4個,從而顯著減少後續層的記憶體佔用。
  下采樣:(NCHW -> (1/4)*NCHW)

4)batch_size

  使用批量大小為64而不是128個記憶體消耗量。然而,培訓也可能需要更長時間,特別是訓練的最後階段,使得準確的梯度變得越來越重要。大多數卷積操作也針對64或更大的小批量尺寸進行優化,從而從批量大小32開始,訓練速度大大降低。因此,將小批量尺寸縮小到甚至低於32,只能作為最後的選擇。

5)float32

  另一個經常被忽視的選擇是更改卷積網路使用的資料型別。通過從32位切換到16位,可以輕鬆地將記憶體消耗量減半,而不會降低分類效能。在P100特斯拉卡上,這甚至會給你一個巨大的加速。

6)減少全連線層

  一般只留最後一層分類用的全連線層。