摘要:
CNN在执行卷积时,因为卷积核的大小通常大于1,并且滑动步长也不一定为1,所以会导致卷积操作输出的特征图大小比输入特征图要小,如果想控制输出特征图的大小,在不改变卷积核尺寸及滑动步长的情况下,就需要在特征图的边界进行填充(padding),在TensorFlow框架中,可以使用SAME(自动填充,使输出特征图尺寸和输入尺寸一样)和VALID(不做填充,会导致输出尺寸比输入要小)来处理padding问题,在PyTorch中,得自己设置填充数量。顺便说一下,其实是否填充一般情况下对性能影响不大,TensorFlow中padding经常设置为SAME,这样很方便计算卷积每层输出的尺寸。
输出尺寸计算:
假设输入特征图尺寸为,卷积和及滑动步长为
,填充的像素为
,输出特征图尺寸为
。
如果不填充,即=0,
,
,floor表示向下取整。
如果填充,即,
,
,此处的padding只填充宽或高的一侧,如果是两侧,乘以2即可。