CNN:add padding pixels 解释

一句话总结

padding是增加各个边的pixels的数量,目的是保持feature map 不要太小,但也没必要超过原图的大小,所以不可以任意数量;
padding的上限是维持feature map 大小与原图大小一致,具体增加pixel的数量多少,由filter的尺寸和stride大小共同决定;
有一个具体的算法,实现padding, filter size, feature map size之间的相互推导计算。

padding 存在的意义在于

为了不丢弃原图信息
为了保持feature map 的大小与原图一致
为了让更深层的layer的input依旧保持有足够大的信息量
为了实现上述目的,且不做多余的事情,padding出来的pixel的值都是0,不存在噪音问题。

探索一句话版的机器学习与深度学习_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili p13

关于上述padding相关算法的细节,见以下笔记和视频

深度碎片:吴恩达深度学习课程(全):第一遍学习完结​zhuanlan.zhihu.com图标

1.4 padding 课程 文本笔记 视频笔记 新发现3

为什么需要做Padding?
为什么conv-layer 之后需要加pooling_layer?
如果只有conv-layer会怎样?
使用pooling layer能解决什么问题?
为什么max_pooling 要优于strided convolution 和average_pooling?
最有downsampling的组合是什么?
如何计算feature map的长宽或filter的长宽?
怎样的情况下,设定padding=1或2或其他?
为什么filter长宽要用奇数值?

完整的计算feature map 长与宽的公式 = (n + 2p - f)/s +1

n 原图片(input)长与宽,p为padding,f是filter的长与宽, s是stride值

转自:https://zhuanlan.zhihu.com/p/36278093