网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
×
f
×
c
0
c_1\times f\times f\times c_0
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)
![img](https://img-blog.csdnimg.cn/img_convert/2cbcc85f49bc26c92a10d4cef66ad9a2.png)
![img](https://img-blog.csdnimg.cn/img_convert/c8992c193e7b145b1254f36a3aa62b10.png)
![img](https://img-blog.csdnimg.cn/img_convert/5ad030f46858ec2fcb8bf6583400fc0d.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
[外链图片转存中...(img-WbGKjtHX-1715617196094)]
[外链图片转存中...(img-HV4Wgmi8-1715617196094)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**