卷积参数量计算

文章目录

      • 普通卷积
      • 计算量(乘加次数)
        • FLOPs(floating point operations)
        • 可分离卷积
        • 参数量:
        • MAC计算量:
        • FLOPs计算量为:
      • 参考:

普通卷积

参数量

参数量是参与计算参数的个数,占用内存空间,假设输入通道和输出通道都是1,核大小 ( K , K ) (K,K) (K,K),输入map大小为:

( H i n , W i n ) (H_{in},W_{in}) (Hin,Win),输出map大小为 ( H o u t , W o u t ) (H_{out},W_{out}) (Hout,Wout),考虑偏置,不补0的卷积。

其参数量为:K*K+1

若考虑输入通道 C i n C_{in} Cin和输出通道 C o u t C_{out} Cout,则参数量为: ( C i n ∗ ( K ∗ K ) + 1 ) ∗ C o u t (C_{in}*(K*K)+1)*C_{out} (Cin(KK)+1)Cout


计算量(乘加次数)

MAC(Multiply Accumulate),需要考虑输出map的大小,1个MAC算两次操作

假设输入通道和输出通道都是1,核大小为 K ∗ K K*K KK,输入map大小为

( H i n , W i n ) (H_{in},W_{in}) (Hin,Win),输出map大小为 ( H o u t , W o u t ) (H_{out},W_{out}) (Hout,Wout),考虑偏置,不补0的卷积。

其计算量为: K ∗ K ∗ H o u t ∗ W o u t K*K*H_{out}*W_{out} KKHoutWout

若考虑输入通道 C i n C_{in} Cin和输出通道 C o u t C_{out} Cout
计算量为: C i n ∗ K ∗ K ∗ H o u t ∗ W o u t ∗ C o u t C_{in}*K*K*H_{out}*W_{out}*C_{out} CinKKHoutWoutCout


FLOPs(floating point operations)

浮点运算量,指计算量,跟乘加次数有点不一样,若考虑偏置

F L O P s = ( C i n ∗ 2 ∗ K ∗ K ) ∗ H o u t ∗ W o u t ∗ C o u t FLOPs =(C_{in}*2*K*K)*H_{out}*W_{out}*C_{out} FLOPs=(Cin2KK)HoutWoutCout

不考虑偏置的情况下

F L O P s = ( C i n ∗ 2 ∗ K ∗ K − 1 ) ∗ H o u t ∗ W o u t ∗ C o u t FLOPs =(C_{in}*2*K*K-1)*H_{out}*W_{out}*C_{out} FLOPs=(Cin2KK1)HoutWoutCout

注意:这里乘和加分开,加的操作因为n个数相加所以减1了,考虑偏置则补掉了加1


可分离卷积

可分离的卷积具体操作是先对输入map每单个channel进行卷积的操作,然后再进行1维卷积实现输出通道的改变。

假设输入通道和输出通道都是1,核大小为 ( K , K ) (K,K) (K,K),输入map大小为

( H i n , W i n ) (H_{in},W_{in}) (Hin,Win),输出map大小为 ( H o u t , W o u t ) (H_{out},W_{out}) (Hout,Wout),考虑偏置,不补0的可分离卷积。

考虑输入通道 C i n C_{in} Cin和输出通道 C o u t C_{out} Cout

参数量:

C i n ∗ K ∗ K + C o u t ∗ ( C i n ∗ 1 ∗ 1 + 1 ) C_{in}*K*K+C_{out}*(C_{in}*1*1+1) CinKK+Cout(Cin11+1), 后面加1是偏置

MAC计算量:

C i n ∗ K ∗ K ∗ H o u t ∗ W o u t + C i n ∗ C o u t ∗ H o u t ∗ W o u t C_{in}*K*K*H_{out}*W_{out}+C_{in}*C_{out}*H_{out}*W_{out} CinKKHoutWout+CinCoutHoutWout

FLOPs计算量为:

( C i n ∗ 2 ∗ K ∗ K − 1 ) ∗ H o u t ∗ W o u t + ( C i n ∗ 2 ∗ 1 ∗ 1 ) ∗ H o u t ∗ W o u t ∗ C o u t (C_{in}*2*K*K-1)*H_{out}*W_{out}+(C_{in}*2*1*1)*H_{out}*W_{out}*C_{out} (Cin2KK1)HoutWout+(Cin211)HoutWoutCout

参考:

链接:https://www.jianshu.com/p/c2a0ba5bb3d1

你可能感兴趣的:(深度学习)