merge_bn 合併bn層到conv或FC層原理介紹及程式碼實現
阿新 • • 發佈:2019-01-23
參考文獻:http://blog.csdn.net/diye2008/article/details/78492181
1.bn合併的必要性:
bn層即batch-norm層,一般是深度學習中用於加速訓練速度和一種方法,一般放置在卷積層(conv層)或者全連線層之後,將資料歸一化並加速了訓練擬合速度。但是bn層雖然在深度學習模型訓練時起到了一定的積極作用,但是在預測時因為憑空多了一些層,影響了整體的計算速度並佔用了更多記憶體或者視訊記憶體空間。所以我們設想如果能將bn層合併到相鄰的卷積層或者全連線層之後就好了,於是就有了這篇文章所提到的工作。
2.bn合併本身的數學原理:
bn層一般在神經網路中‘所處的位置如下圖所示:
如上圖可以看到,bn層的位置一般在conv(or Fc)層的後面,也有一些情況bn在conv(or Fc)層的前面。我們先來兩種情況分別來考慮。
2.1 bn層在conv層之後的情形
bn合併的原理,可以由下兩張圖所示
bn層進行資料處理的過程
原文推導有誤,本文推導如下:
程式碼: