

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
n
2
p
−
f
1
)
(n+2p-f+1)×(n+2p-f+1)
(n+2p−f+1)×(n+2p−f+1)。所以,要是我们想要保持图像大小不变,则意味着
2
p
−
f
1
=
0
2p-f+1=0
2p−f+1=0,则
p
=
f
−
1
2
p=\frac{f-1}{2}
p=2f−1,在后面我们的卷积核通常会设置为奇数。
为了指定卷积操作中的padding,我们可以指定
p
p
p的值。以上就是padding,下面我们讨论一下如何在卷积中设置步长。
2.步幅(stride)
卷积窗口从输入张量的左上角开始,向下、向右滑动。 在前面的例子中,我们默认每次滑动一个元素。 但是,有时候为了高效计算或是缩减采样次数,卷积窗口可以跳过中间位置,每次滑动多个元素。卷积中的步幅是另一个构建卷积神经网络的基本操作,例如,下面是一个步幅为3的情况。

如果我们用一个
f
×
f
f×f
f×f的过滤器卷积一个
n
×
n
n×n
n×n的图像,padding为
p
p
p,步幅为
s
s
s,在这个例子中
s
=
3
s=3
s=3,因为现在我们不是一次移动一个步长,而是一次移动
s
s
s步,输出于是变为
[
n
2
p
−
f
s
1
]
[
×
n
2
p
−
f
s
1
]
[\frac{n+2p - f}{s} + 1] [\times \frac{n+2p - f}{s} + 1]
[sn+2p−f+1][×sn+2p−f+1]。[] 表示向下取整。
3.代码实现
3.1 padding实现
在pytorch中,padding和stride的都可以在nn中实现
# 导入相关库
import torch
from torch import nn
# 定义计算卷积层函数
def comp\_conv2d(conv2d, X):
# 这里的(1,1)表示批量大小和通道数都是1
X = X.reshape((1, 1) + X.shape)
Y = conv2d(X)
# 省略前两个维度:批量大小和通道
return Y.reshape(Y.shape[2:])
# 请注意,padding参数这里每边都填充了1行或1列,因此总共添加了2行或2列
conv2d = nn.Conv2d(1, 1, kernel_size=3, padding=1)#因此这里相当于是一个3×3的kernel加padding=1,那么根据我们的公式可以得到,最终得到的输出和输入一致
X = torch.rand(size=(8, 8))
comp_conv2d(conv2d, X).shape
torch.Size([8, 8])
3.2 stride实现
步幅使用stride参数实现,具体代码如下,设置步幅为2,padding为1,kernel_size为3×3,那么这样根据公式
[
n
2
p
−
f
s
1
]
[\frac{n+2p-f}{s}+1]
[sn+2p−f+1]这里n为8,p=1,f=3,s=2,会返回一个4×4的输出。
conv2d = nn.Conv2d(1, 1, kernel_size=3, padding=1, stride=2)
comp_conv2d(conv2d, X).shape



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
1, stride=2)
comp_conv2d(conv2d, X).shape
[外链图片转存中...(img-qRNtssKQ-1715474518623)]
[外链图片转存中...(img-VQDLU6aO-1715474518623)]
[外链图片转存中...(img-q2nOKV7J-1715474518624)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

被折叠的 条评论
为什么被折叠?



