ML/DL-复习笔记【九】- 神经网络中各层的计算量与参数量

本节为ML/DL-复习笔记【九】- 神经网络中各层的计算量与参数量,主要内容包括:标准卷积、空洞卷积、转置卷积、深度可分离卷积以及全连接层的计算量、参数量与输出特征图尺寸计算。

1. 标准卷积

1.1 计算量

  计算量以做乘法和加法的次数为单位,对于输入特征图f=(B,H,W,C),卷积核kernel=(K,S,C,O)【(核尺寸,步长,输入通道数,输出通道数)】。

  首先看一次卷积的计算量,一个 k × k k\times k k×k的卷积,执行一次卷积操作,需要 k × k k\times k k×k次乘法操作(卷积核每个参数都要和特征图上的像素相乘一次)和 k × k − 1 k\times k-1 k×k1次加法操作( k × k k\times k k×k个数加起来),所以一次卷积需要乘加次数为 k × k + k\times k+ k×k+ k × k − 1 = 2 × k × k − 1 k\times k-1=2\times k\times k-1 k×k1=2×k×k1

  接着看在一个特征图上执行卷积需要进行卷积的次数:
( H − K + P h S + 1 ) × ( W − K + P w S + 1 ) (\frac{H-K+P_h}{S}+1)\times(\frac{W-K+P_w}{S}+1) (SHK+Ph+1)×(SWK+Pw+1)

  其中 P h , P w P_h,P_w Ph,Pw是高和宽方向填充的像素。

  然后看C个特征图上还需要乘上C,并且需要输出O个特征图,再考虑batch_size,最终计算量:
B × O × C × ( C − 1 ) × ( H − K + P h S + 1 ) B\times O\times C\times (C-1)\times(\frac{H-K+P_h}{S}+1) B×O×C×(C1)×(SHK+Ph+1)
× ( W − K + P w S + 1 ) × ( 2 × k × k − 1 ) \times(\frac{W-K+P_w}{S}+1) \times(2\times k\times k-1 ) ×(SWK+Pw+1)×(2×k×k1)

1.2 参数量

  卷积层参数量仅仅与卷积核大小、偏置和BN有关,对于卷积核kernel=(K,S,C,O),权重参数量 K × K × C × O K\times K\times C\times O K×K×C×O,偏置参数量为O,如果使用了BN,那么还有两个可学习参数 α , β \alpha,\beta α,β 2 × O 2\times O 2×O,所以该卷积层的参数量为:
K × K × C × O + O + 2 × O K\times K\times C\times O+O+2\times O K×K×C×O+O+2×O

1.3 输出特征图尺寸

  输入特征图尺寸 H × W × C H\times W\times C H×W×C,卷积核kernel=(K,S,C,O,P)【(核尺寸,步长,输入通道数,输出通道数,填充)】,则:
H o u t = ( H − K + 2 P ) / S + 1 H_{out}=(H-K+2P)/S+1 Hout=(HK+2P)/S+1
W o u t = ( W − K + 2 P ) / S + 1 W_{out}=(W-K+2P)/S+1 Wout=(WK+2P)/S+1

1.4 计算方式

在这里插入图片描述
在这里插入图片描述
  具体地,原始卷积核:
在这里插入图片描述

  重排列:
在这里插入图片描述

  本质上就是卷积矩阵的每一行只是一个重新排列的卷积核矩阵,在不同的地方用零填充:
在这里插入图片描述

  然后把输入矩阵拉伸:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 空洞卷积

  一个标准卷积的卷积核kernel=(K,S,C,O,P)【(核尺寸,步长,输入通道数,输出通道数,填充)】引入一个超参数d表示扩张率,则核尺寸k变为k+(k-1)*(d-1),相应地,输出特征图尺寸:
H o u t = ( H − K − ( K − 1 ) ∗ ( d − 1 ) + 2 P ) / S + 1 H_{out}=(H-K-(K-1)*(d-1)+2P)/S+1 Hout=(HK(K1)(d1)+2P)/S+1
W o u t = ( W − K − ( K − 1 ) ∗ ( d − 1 ) + 2 P ) / S + 1 W_{out}=(W-K-(K-1)*(d-1)+2P)/S+1 Wout=(WK(K1)(d1)+2P)/S+1

  空洞卷积并没有引入额外的参数量,但是显然会增加计算量。

3. 转置卷积

3.1 特征图尺寸

  转置卷积的输入是标准卷积的输出,二者对调即可:
H i n = ( H o u t − K + 2 P ) / S + 1 H_{in}=(H_{out}-K+2P)/S+1 Hin=(HoutK+2P)/S+1
W i n = ( W o u t − K + 2 P ) / S + 1 W_{in}=(W_{out}-K+2P)/S+1 Win=(WoutK+2P)/S+1
⟹ \Longrightarrow
H o u t = ( H i n − 1 ) × S − 2 P + K H_{out}=(H_{in}-1)\times S-2P+K Hout=(Hin1)×S2P+K
W o u t = ( W i n − 1 ) × S − 2 P + K W_{out}=(W_{in}-1)\times S-2P+K Wout=(Win1)×S2P+K

3.2 计算方式

  对于转置卷积:
在这里插入图片描述
在这里插入图片描述

4. 深度可分离卷积

特征图尺寸计算核标准卷积一样。

4.1 计算量

  输入特征图尺寸 ( D f , D f , M ) , (D_f,D_f,M), (Df,Df,M)卷积核 ( D k , D k , M , N ) [ 卷 积 核 尺 寸 , 输 入 和 输 出 通 道 数 ] (D_k,D_k,M,N)[卷积核尺寸,输入和输出通道数] (Dk,Dk,M,N)[],输出特征图尺寸 ( D G , D G , N ) (D_G,D_G,N) (DG,DG,N),计算量:
D K ∗ D K ∗ M ∗ N ∗ D F ∗ D F D_K*D_K*M*N*D_F*D_F DKDKMNDFDF
  拆分之后,深度卷积负责滤波,尺寸 ( D k , D k , 1 , M ) (D_k,D_k,1,M) (Dk,Dk,1,M),输出特征图 ( D G , D G , M ) (D_G,D_G,M) (DG,DG,M);逐点卷积负责通道转换,尺寸 ( 1 , 1 , M , N ) (1,1,M,N) (1,1,M,N),最终输出 ( D G , D G , N ) (D_G,D_G,N) (DG,DG,N),计算量:
D K ∗ D K ∗ M ∗ D F ∗ D F + M ∗ N ∗ D F ∗ D F D_K*D_K*M*D_F*D_F+M*N*D_F*D_F DKDKMDFDF+MNDFDF

4.2 参数量

M ∗ K ∗ K + N ∗ M M*K*K+N*M MKK+NM

5. 全连接层

  考虑输入特征图尺寸 7 × 7 × 512 7\times 7\times 512 7×7×512,全连接层将特征图展开为一维向量 1 × 4096 1\times 4096 1×4096,实际上用了4096个 7 × 7 × 512 7\times 7\times 512 7×7×512的滤波器去做卷积,参数量来到了 7 × 7 × 512 × 4096 = 102760448 7\times 7\times 512\times 4096=102760448 7×7×512×4096=102760448,这也就是常说的全连接层参数冗余,能够占到整个网络参数的80%以上。

  全连接层计算量和参数量的计算方法一样。

参考:


欢迎扫描二维码关注微信公众号 深度学习与数学   [每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾]
在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值