既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
在卷积神经网络中,有多个输出通道是至关重要的。在经典的神经网络架构中(例如LeNet,AlexNet,VGG
等),随着神经网络层数的加深,我们常会增加输出通道的维数,通过减少空间分辨率以获得更大的通道深度。直观地说,我们可以将每个通道看作是对不同特征的反应。如下图所示:
我们让这个6×6×3的图像和两个3×3×3的过滤器卷积。第一个是黄色卷积核,假设是一个垂直边界检测器。第二个卷积核是橘色,假设是一个水平边界检测器。这样就得到4×4×2的输出。根据这个我们可以发现,假设
c
0
c_0
c0表示输入通道数,
c
1
c_1
c1表示输出通道数,则有n×n×
c
0
c_0
c0和一个
c
1
×
f
×
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
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
[外链图片转存中…(img-Yd57UWy1-1715580284185)]
[外链图片转存中…(img-k6mlHfec-1715580284186)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新