当前位置:首页 > 编程笔记 > 正文
已解决

关于卷积神经网络的填充(padding)

来自网友在路上 164864提问 提问时间:2023-11-08 18:26:07阅读次数: 64

最佳答案 问答题库648位专家为你答疑解惑

认识填充 (padding)

        随着卷积层数的加深,输出进一步缩小,那么最终会导致输出很快就只剩下1∗1的数组,这也就没办法继续计算了,所以提出了填充的方法来方便网络的进一步加深。 其实填充的原因有两点:

  1. 不填充会导致图像逐渐变小,使网络深度无法达到很深;
  2. 不填充会导致边缘和角落的像素学习不充分,被覆盖的次数不多。

        第二点的意思是指例如上图中的例子,输入数组的四个顶点:1,3,7,9在进行的四次卷积运算中,只被计算了一次,所以卷积学习的不充分,填充就是让卷积网络能够将边缘的角落也能多次学习,从而更全面地发现特征。

         填充的方法就是在输入的高和宽两侧分别填充了0元素,再进行卷积运算。

如何计算填充

这里需要介绍两种卷积核

  1. Valid 卷积,表示的是不进行填充的卷积核;
  2. Same 卷积,表示填充之后,进行运算之后的形状不变。

假设输入的形状为n∗n,填充的大小为p,卷积核的形状为f∗f,当使用的是 Same 卷积时,输出的形状也是n∗n

        计算的等式为:n+2p−f+1=n,解得p=2f−1​

        从结果中也可以看出,当卷积核的高宽为偶数时,就容易造成p的结果不是一个整数,这也就是上一张中提到卷积核通常高和宽均为奇数的其中一个原因。

如何调用Pytorch中的填充

nn.Conv2d()中的参数padding就是来控制填充大小的。padding=0表示四周不进行零填充,而padding=1则表示四周进行1个像素点的零填充,当然,也可以用padding=(2,1)来表示在高和宽两侧的填充数分别为21

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"关于卷积神经网络的填充(padding)":http://eshow365.cn/6-35483-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!