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

1. 感受野

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

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

 

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

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

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

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

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

 

2.  每一层的参数量:

卷积层:输入为28×28的单通道图,经过一层卷积以后输出为24×24×20,因为边界处理所以卷积完尺寸为28-5+1 = 24。卷积核的数量为20,所以conv-1的尺寸如上。再经过一层pooling层尺寸为12×12×20。则单样本前向传播计算量为:5×5×24×24×20 = 288 000,实际计算量还应乘以batchsize = 64。卷积层参数数量为:5×5×20 = 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,就是源于全连接的特性。