已解决
关于卷积神经网络的填充(padding)
来自网友在路上 164864提问 提问时间:2023-11-08 18:26:07阅读次数: 64
最佳答案 问答题库648位专家为你答疑解惑
认识填充 (padding)
随着卷积层数的加深,输出进一步缩小,那么最终会导致输出很快就只剩下1∗1
的数组,这也就没办法继续计算了,所以提出了填充的方法来方便网络的进一步加深。 其实填充的原因有两点:
- 不填充会导致图像逐渐变小,使网络深度无法达到很深;
- 不填充会导致边缘和角落的像素学习不充分,被覆盖的次数不多。
第二点的意思是指例如上图中的例子,输入数组的四个顶点:1
,3
,7
,9
在进行的四次卷积运算中,只被计算了一次,所以卷积学习的不充分,填充就是让卷积网络能够将边缘的角落也能多次学习,从而更全面地发现特征。
填充的方法就是在输入的高和宽两侧分别填充了0
元素,再进行卷积运算。
如何计算填充
这里需要介绍两种卷积核
- Valid 卷积,表示的是不进行填充的卷积核;
- 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)
来表示在高和宽两侧的填充数分别为2
和1
。
查看全文
99%的人还看了
相似问题
- CNN卷积神经网络Python实现
- 竞赛 题目:基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python
- 时序预测 | Python实现ConvLSTM卷积长短期记忆神经网络股票价格预测(Conv1D-LSTM)
- 卷积神经网络(CNN)天气识别
- FSOD论文阅读 - 基于卷积和注意力机制的小样本目标检测
- YOLOv8改进 | 如何在网络结构中添加注意力机制、C2f、卷积、Neck、检测头
- 人工智能-卷积神经网络之多输入多输出通道
- 多维时序 | MATLAB实现TCN-selfAttention自注意力机制结合时间卷积神经网络多变量时间序列预测
- 基于轻量级卷积神经网络CNN开发构建打架斗殴识别分析系统
- 利用梯度上升可视化卷积核:基于torch实现
猜你感兴趣
版权申明
本文"关于卷积神经网络的填充(padding)":http://eshow365.cn/6-35483-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 以订单退款流程为例,聊聊如何优化策略模式
- 下一篇: 解决Java中https请求接口报错问题