本文已参与「新人创作礼」活动,一起开启掘金创作之路。
0. 变量定义
假设输入的特征图(feature map)的shape为[Height, Weight, Channel],对应的字母表示为[Hin,Win,Cin]; 卷积核(kernel)的shape为[Hk,Wk], 滤波器(filter)的shape为[Cout,Hout,Wout,Cin]; 输出的feature map的shape为[Hout,Wout,Cout];padding=[P1,P2];stridding=[S1,S2]
不难推出:
Hout=[S1Hin+2P1−Hk]+1(0-1)
Wout=[S2Win+2P2−Wk]+1(0-2)
其中[ ]代表向下取整
1. 卷积层的参数量计算
卷积核(kernel)的参数量:Hk×Wk
滤波器(filter)的参数量:Cout×Hk×Wk×Cin
bias参数量:Cout
总的参数量:Cout×Hk×Wk×Cin+Cout
2. 卷积操作的计算量
2.1. 乘法计算量
为了得到输出feature map的一个像素点,需要进行Cin×Hk×Wk次乘法操作。因此为了得到整个输出feature map,需要进行Cout×Hout×Wout×Cin×Hk×Wk次乘法。
2.2. 加法计算量
为了得到输出feature map的一个像素点,需要进行Cin×(Hk×Wk−1)+(Cin−1)+1=Cin×Hk×Wk次加法操作。注意最后一个1是bias。因此为了得到整个输出feature map,需要进行Cout×Hout×Wout×Cin×Hk×Wk次加法。
居然和乘法计算量一样!
参考
www.cnblogs.com/qinduanying…