CNN模型几个常见层的复杂度分析-FLOPs

时间:2024-03-16 20:07:48

FLOPs:是floating point operations的缩写,表示浮点运算数,理解为计算量。用来衡量模型的复杂度。

目录

1 卷积:

解读:

参数量:

参考图:

计算量:

2 全连接

3 Dw-pw卷积

解读:

参数量:

示意图:


以下是自己整理推理的几个常见层的FLOPs计算:

1 卷积:

解读:

三维卷积的形式,对输入通道为Cin的输入,用Cout大小为Cin*Kh*Kw的卷积核卷积。最后的输出大小为Cout*Mh*Mw

参数量:

Cout*Cin*Kh*Kw

参考图:

CNN模型几个常见层的复杂度分析-FLOPs

 

                                                                             图1:卷积

计算量:

  • 卷积乘:

(Kw*Kh)*(Mh*Mw)*(Cin*Cout)

  • 卷积加:

Kw*Kh*Cin-1*Mh*Mw*Cout

Ps:n个数相加,相加次数是n-1。

  • Bias加:

Mh*Mw*Cout

  • 总:

No Bias:(2*Kw*Kh*Cin-1)*Mh*Mw*Cout

bias: 2*Kw*Kh*Cin*Mh*Mw*Cout


2 全连接

  • 乘:

Cin*Cout

  • 加:

(Cin-1)*Cout

  • 总:

(2*Cin-1)*Cout


3 Dw-pw卷积

解读:

先depth-wise操作,对通道进行二维卷积。卷积核大小为1*Cin*Kh*Kw。然后进行point-wise操作,对卷积之后的特征图进行加权求和,此时的卷积核大小为Cout*Cin*1*1

参数量:

Cin*Kh*Kw+Cout*Cin*1*1

示意图:

CNN模型几个常见层的复杂度分析-FLOPs

 

                                                                               图2:Depth-wise

 

CNN模型几个常见层的复杂度分析-FLOPs

                                                                             图3:Point-wise

Cin*(Kw*Kh)*(Mh*Mw)

(Cin-1)*Mh*Mw*Cout

Mh*Mw*Cin*(Kw*Kh+(Cin-1)*Cout)