既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
c1×f×f×c0的卷积核进行处理,得到一个
(
n
−
f
1
×
c
1
)
×
(
n
−
f
1
×
c
1
)
(n-f+1\times c_1)\times (n-f+1 \times c_1)
(n−f+1×c1)×(n−f+1×c1)的输出。
3.代码实现
3.1 多通道输入实现
# 导入相关库
import torch
from d2l import torch as d2l
def corr2d\_multi\_in(X, K):
# 先遍历“X”和“K”的第0个维度(通道维度),再把它们加在一起。
return sum(d2l.corr2d(x, k) for x, k in zip(X, K))
我们测试一下结果
X = torch.tensor([[[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]], [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]]])
K = torch.tensor([[[0.0, 1.0], [2.0, 3.0]], [[1.0, 2.0], [3.0, 4.0]]])
X.shape,K.shape
(torch.Size([2, 3, 3]), torch.Size([2, 2, 2]))
可以看出,输入是一个2通道
3
×
3
3\times3
3×3的数据,卷积核是
2
×
2
×
2
2\times2\times2
2×2×2,得到的结果为
2
×
2
2\times2
2×2。
corr2d_multi_in(X, K)
tensor([[ 56., 72.],
[104., 120.]])
3.2 多通道输出实现
定义多通道输出函数
def corr2d\_multi\_in\_out(X, K):
# 迭代“K”的第0个维度,每次都对输入“X”执行互相关运算。
# 最后将所有结果都叠加在一起,注意,这里我们只对K进行遍历
return torch.stack([corr2d_multi_in(X, k) for k in K], 0)
使用stack将卷积核堆叠
K = torch.stack((K, K + 1, K + 2), 0)
K.shape
torch.Size([3, 2, 2, 2])
可以看出这是一个3个输出通道,2个输入通道的2×2卷积核,因此得到的结果为
3
×
2
×
2
3\times2\times2
3×2×2。
corr2d_multi_in_out(X, K)
tensor([[[ 56., 72.],
[104., 120.]],
[[ 76., 100.],
[148., 172.]],
[[ 96., 128.],
[192., 224.]]])
🔎本章的介绍到此介绍,如果文章对你有帮助,请多多点赞、收藏、评论、订阅支持!!【深度学习】:《PyTorch入门到项目实战》
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
3Gh-1715502024419)]
[外链图片转存中…(img-EXvAs0zk-1715502024420)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新