caffe中融合convolution layer和batch norm layer

一. 合并原因

一般的网络结构,卷积层后会跟batch norm层,在测试阶段:

(1) 从参数的由来来讲,训练好的模型中的batch norm参数,是由训练集中每个batch的batch norm层的参数累加得到的;

(2) 从功能来讲,batch norm做的工作是对batch数据做减均值除方差,再线性变换操作。

通过将卷积层和batch norm层合并,可以减少网络初始化和运算的时间,从而在测试的时候,减少测试时间。

二. 合并方式

(1) 卷积层的计算公式:

                                            (1)

其中Wconv是卷积层的权重,bconv是卷积层的偏置。

(2) BN层的计算公式(batch norm + scale):

                                         (2)

m为均值,delta为方差,abn和bbn为scale层的参数。 

(3) 两者融合,融合的原理是:将卷积层的输出(1)作为BN层的输入带入公式(2)中,可得:

(3)

X是卷积层的输入,因为上述变换都是线性变换,则融合后的卷积层参数为:

                                   (4)

三. 合并实现

(1) 给定测试deploy和训练好的模型caffemodel;

(2) 从deploy中找出convolution, batch norm, scale的位置;

(3) 从caffemodel中取出上述参数,按照(4)式计算新的卷积层参数;

(4) 从deploy中删除batch norm和scale层。

猜你喜欢

转载自www.cnblogs.com/liangx-img/p/11890946.html