卷积层计算量(FLOPS)和参数量的计算
1.卷积参数量的计算,若卷积层的输入featuremap的维度为Cin×Hin×Win,卷积核的大小为K1×K2, padding=P1×P2, stride=S1×S2,卷积核(filter)的数量为Cout,则输出特征图的大小为Cout×Hout×Wout,其中:
Hout=⌊(H−K1+2P1)/S1⌋+1
Wout=⌊(W−K2+2P2)/S2⌋+1
⌊⋅⌋表示向下取整。
参数量的计算,由于卷积层共享参数的特性,做一次卷积只和输入通道数Cin,卷积核的大小K1和K2有关,而与输入高度Hin和宽度Win无关。因此,当输出通道数为Cout时,卷积核的参数量为:
Cout×Cin×K1×K2
bias的参数为:Cout
因此,总的参数量为:
Cout×Cin×K1×K2+Cout
2.卷积层浮点数操作(FLOPS)计算量,卷积操作本质上是个线性运算,通常可表示为:
y=Wx+b
这里面涉及到了乘法运算和加法运算,下面将进行一一说明。
乘法运算:
为了得到输出特征图中的某一个像素,需要Cin×K1×K2次乘法运算,而特征图总共有Cout×Hout×Wout个像素,则总计需要的乘法运算量为:
Cout×Hout×Wout×(Cin×K1×K2)
加法运算
当前主流的浮点运算次数(floating point operations,FLOPs)的计算,一般只考虑加上bias的一次加法。
bias=True,则加法运算次数为Cout×Hout×Wout×1;
bias=False,则加法运算次数为0。
综上,bias为True时,总的FLOPS为:
Cout×Hout×Wout×(Cin×K1×K2+1)
bias为False时,总的FLOPS为:
Cout×Hout×Wout×(Cin×K1×K2)
文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/jacke121/article/details/107643067
- 点赞
- 收藏
- 关注作者
评论(0)