CNN的感受野,参数量,计算量

1. 感受野

为了计算CNN每一层的感受野,除了要知道特征图每个维度的特征数n,还需要记录每一层的其他信息,这包括当前层的感受野大小r,两个相邻特征的距离(跳跃的距离,如前面可视化所示)j,和左上角特征(第一个特征)的中心坐标start。注意感受野(其实是特征图第一个特征的感受野)的中心坐标就等于这个特征的中心坐标,就如前面可视化中所示。当采用的卷积其核大小为k,padding大小为p,步长为s,输出特征图的感受野可以按照如下公式计算:

640?wx_fmt=png

 

  • 第一个式子根据输入特征图大小以及卷积参数计算输出特征图大小,前面已经说过。

  • 第二个式子计算输出特征图的特征间的间隔,其等于上一层的间隔值乘以卷积的步长,所以间隔值将是按照步长呈指数级增长。

  • 第三个式子计算输出特征图的感受野大小,其等于前一层感受野大小加上(k-1) * j_in,所以感受野是呈指数级增加,并且还有一个因子k-1。

  • 第四个式子计算输出特征图的第一个特征感受野的中心坐标,其等于第一层的中心坐标加上(k-1) / 2 * j_in,再减去p j_in,注意两项都要乘以前一层的间隔距离以得到实际距离。

 

2.  每一层的参数量:

卷积层:输入为28×28的单通道图,经过一层卷积以后输出为24×24×20,因为边界处理所以卷积完尺寸为28-5+1 = 24。卷积核的数量为20,所以conv-1的尺寸如上。再经过一层pooling层尺寸为12×12×20。则单样本前向传播计算量为:5×5×1x24×24×20 = 288 000,实际计算量还应乘以batchsize = 64。卷积层参数数量为:5×5×1x20 = 500,(如果算上偏置,就是(5*5+1)*20)。计算量和参数比为:288000/500 = 576.

全连接层:卷积部分得到的featuremap为4×4×50,全连接部分是将featuremap展开成一维向量再与全连接相连。所以单样本前向传播计算量为:4×4×50×500 = 400 000,参数数量为4×4×50×500 = 400 000。在全连接中计算量和参数比始终为1,就是源于全连接的特性。

 

3. 下面举例讲解 Standard convolution、depth-wise convolution 和 pointwise convolution。

 

假设输入的 feature map 是两个 5*5 的,即 5*5*2;输出 feature map 数量为 3,大小是 3*3(因为这里采用 3*3 卷积核)即 3*3*3。

标准卷积是将一个卷积核(3*3)复制 M 份(M=2), 让二维的卷积核(面包片)拓展到与输入 feature map 一样的面包块形状。

 

Standard 过程如下图,X 表示卷积,+表示对应像素点相加,可以看到对于 O1 来说,其与输入的每一个 feature map 都「发生关系」,包含输入的各个 feature map 的信息。

 

Depth-wise 过程如下图,可以看到 depth-wise convolution 得出的两个 feature map——fd1 和 fd2 分别只与 i1 和 i2「发生关系」,这就导致违背上面所承认的观点「输出的每一个 feature map 要包含输入层所有 feature map 的信息」,因而要引入 pointwise convolution。

 

那么计算量减少了多少呢?通过如下公式计算:

 

其中 DK 为标准卷积核大小,M 是输入 feature map 通道数,DF 为输入 feature map 大小,N 是输出 feature map 通道数。本例中,DK=3,M=2,DF=5,N=3,参数的减少量主要就与卷积核大小 DK 有关。在本文 MobileNet 的卷积核采用 DK=3,则大约减少了 8~9 倍计算量。

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值