天天看點

【caffe轉向pytorch】caffe的BN層+scale層=pytorch的BN層

caffe裡面用BN層的時候通常後面接一下scale層,原因如下:

caffe 中為什麼bn層要和scale層一起使用

這個問題首先你要了解batchnormal是做什麼的。它其實做了兩件事。

    1)輸入歸一化 x_norm = (x-u)/std, 其中u和std是個累計計算的均值和方差。

    2)y=alpha×x_norm + beta,對歸一化後的x進行比例縮放和位移。其中alpha和beta是通過疊代學習的。

那麼caffe中的bn層其實隻做了第一件事。scale層做了第二件事。

這樣你也就了解了scale層裡為什麼要設定bias_term=True,這個偏置就對應2)件事裡的beta。

而在pytorch中,我們可以看一下代碼注釋說明

【caffe轉向pytorch】caffe的BN層+scale層=pytorch的BN層

其中紅框這部分,我們可以看一下這個公式是 

【caffe轉向pytorch】caffe的BN層+scale層=pytorch的BN層

 本身同時完成兩件事情。

繼續閱讀