前言
特征图大小计算式卷积神经网络中一个很基础的问题,也是一个必须理解的问题。卷到最后我们要知道提取的特征的维度的大小,所以我们必须知道,卷积后特征图的大小。这里我们讲解一下卷积的不同方式以及特征图大小计算的公式。
基本公式
卷积的不同方式
常用的卷积(不包含反卷积/转置卷积)的方式有两种,一种是Valid,一种是SAME。阅读过深度学习开源代码的小伙伴,估计知道这两个参数。比如在使用tensorflow的tf.nn.conv2d函数卷积时padding参数就可以指定为VALID
或者SAME
,下面我们就讲解一下这两个参数取值的意义。
VALID
valid是卷积方式的一种,卷积的示例如下图:
可以看到,使用valid方式卷积时,不会做填充,卷积核不会有超出特征图的范围。如果在卷积时剩下的部分不能被卷积核完全覆盖,则这部分将会被放弃,不参与卷积。具体如下图:
这是一个2X3的特征图,卷积核的大小是2X2,步长是2,则只能进行一次卷积,最后一列将被对其丢弃,不参与卷积。
对于valid方式卷积后特征图大小的计算,同样可以使用第二部分中的公式,此时P=0:
width = (W - F) / S + 1 不能整除时向下取整
height = (H - F) / S + 1 不能整除时向下取整
SAME
same也是卷积方式的一种,如果卷积核的大小是3X3,卷积的示例如下图:
可以看到,使用same方式卷积时,会做填充,填充圈数的公式为P = (F-1)/2。这样可以保证所有的内容都参与卷积,不会丢弃任何列。
同样对于一个2X3的特征图,卷积核的大小是2X2,步长是2,将进行padding,这样将可以进行两次卷积操作。