神经网络中参数及计算量的推导计算

不同类型卷积计算量的计算

  • 说明:

    • 假定输入Blob的shape为BxC1xHxW,输出Blob的shape为BxC2xHxW,卷积核大小为kxk。(这里假定输出的H,W与输入尺寸相同,当然也可通过计算公式计算, pad为pw与ph,stride为s)
    • 深度可分离卷积由:深度卷积(depthwise卷积)和点卷积(pointwise卷积)构成
    • pointwise卷积属于2D卷积(卷积核为1X1);depthwise卷积属于分组卷积(组数G==输入通道数C1)
    • 分组卷积中组数G表示
    • 一些论文中卷积的计算量将乘加作为1个整体MAdds进行统计,那么类似地下面的一个卷积计算量则由 2 k 2 − 1 2k^2-1 2k21变为 k 2 k^2 k2,其他同理。
  • 2D卷积计算量

    • 一个卷积计算量:
      k 2 + k 2 − 1 = 2 k 2 − 1 k^2+k^2-1=2k^2-1 k2+k21=2k21

    • 一张featuremap上卷积计算量:
      ( 2 k 2 − 1 ) ∗ W ∗ H (2k^2-1)*W*H (2k21)WH

    • C1张featuremap的计算量(包含每张featuremap的计算和所有featuremap的累加):

    C 1 ∗ ( 2 k 2 − 1 ) ∗ W ∗ H + ( C 1 − 1 ) ∗ W ∗ H C1*(2k^2-1)*W*H + (C1-1)*W*H C1(2k21)WH+(C11)WH

    • 输出C2个通道的计算量:
      C 2 ∗ [ C 1 ∗ ( 2 k 2 − 1 ) ∗ W ∗ H + ( C 1 − 1 ) ∗ W ∗ H ] C2*[C1*(2k^2-1)*W*H + (C1-1)*W*H] C2[C1(2k21)WH+(C11)WH]
      ​ 可化简为:
      C 2 ∗ W ∗ H ( 2 k 2 − 2 + C 1 ) C2*W*H(2k^2-2+C1) C2WH(2k22+C1)

    • 一个blob(B个batch)的计算量:
      B ∗ C 2 ∗ W ∗ H ( 2 k 2 − 2 + C 1 ) B*C2*W*H(2k^2-2+C1) BC2WH(2k22+C1)

  • 分组卷积计算量

    • 一个卷积计算量:
      k 2 + k 2 − 1 = 2 k 2 − 1 k^2+k^2-1=2k^2-1 k2+k21=2k21

    • 一张featuremap上卷积计算量:
      ( 2 k 2 − 1 ) ∗ W ∗ H (2k^2-1)*W*H (2k21)WH

    • 输出一组(C1/G张)特征图的计算量(包含每张featuremap的计算和C1/G张featuremap的累加):
      C 1 G ∗ ( 2 k 2 − 1 ) ∗ W ∗ H + ( C 1 G − 1 ) ∗ W ∗ H \frac{C1}{G}*(2k^2-1)*W*H + (\frac{C1}{G}-1)*W*H GC1(2k21)WH+(GC11)WH
      ​ 可化简为:
      C 2 ∗ W ∗ H G ( 2 k 2 C 1 G − 1 ) ≈ 2 C 1 C 2 H W k 2 G 2 \frac{C2*W*H}{G}(\frac{2k^2C1}{G}-1)\approx\frac{2C1C2HWk^2}{G^2} GC2WH(G2k2C11)G22C1C2HWk2

    • 输出G组(C2/G张)featuremap的计算量:
      G ∗ 2 C 1 C 2 H W k 2 G 2 = 2 C 1 C 2 H W k 2 G G*\frac{2C1C2HWk^2}{G^2} = \frac{2C1C2HWk^2}{G} GG22C1C2HWk2=G2C1C2HWk2

    • 一个blob(B个batch)的计算量:
      2 B C 1 C 2 H W k 2 G \frac{2BC1C2HWk^2}{G} G2BC1C2HWk2

不同类型层参数量计算

  • 说明:假设卷积核的大小为 kxk, 输入channel为C1, 输出channel为C2

  • 2D卷积参数量:

    • bias为False:

    k ∗ k ∗ C 1 ∗ C 2 k*k*C1*C2 kkC1C2

    • bias为True(bias的数量与输出channel的数量是一样):
      k ∗ k ∗ C 1 ∗ C 2 + C 2 k*k*C1*C2+C2 kkC1C2+C2
  • 全连接参数量:

    • bias为False:

    C 1 ∗ C 2 C1*C2 C1C2

    • bias为True(bias的数量与输出神经元数的数量是一样):
      C 1 ∗ C 2 + c 2 C1*C2+c2 C1C2+c2
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值