动手学深度学习v2
课程链接:https://courses.d2l.ai/zh-v2/
从全连接层到卷积
不变性
- 平移不变性:和检测对象的位置无关
- 局部性:只考虑检测对象的局部区域特征
重新考察全连接层
- 输入和输出变形为矩阵
- 权重变为4维张量
- v:w的重新索引:k = i + a, l = j + b
平移不变性 => v 不依赖于 i 和 j
局部性 => 不必使用远离$ x_{i, j} $的参数
卷积层
互相关运算
互相关运算:cross-correlation
- 交叉相关和卷积的区别
由上可实现:
|
|
卷积层
在前向传播函数中直接调用编写好的互相关运算
|
|
目标边缘检测
简单应用:检测图像中不同颜色的边缘
现有如下黑白图像(0黑1白):
|
|
学习卷积核
|
|
填充和步幅
填充
在输入图像的周围添加额外的行/列
-
填充$ p_h $行和$ p_w $列,填充后输出的形状为
(很少使用偶数核)
这样取值使得输出形状变为$ n_h * n_w $
步幅
每次滑动窗口时移动对应步幅数
代码实现
|
|
多输入多输出通道
彩色图片 = RGB三通道
多输入通道
每个通道均执行互相关操作,然后将结果相加
多输出通道
多个三位卷积核,每个核生成自己的输出通道,每个输出通道可以识别特定模式
1x1卷积层
$ k_h = k_w = 1 $
不识别空间模式,只把通道进行加权融合
代码实现
|
|
池化层
池化层/汇聚层 Pooling:降低卷积层对位置的敏感性
二维最大池化
将滑动窗口中的最大值输出
- 和卷积层一样,具有填充和步幅
- 没有可学习参数
- 不会融合多个通道,输入通道数 = 输出通道数
平均池化层
将.max()替换为.mean()
代码实现
|
|
LeNet
- 卷积层学习图片空间信息
- 全连接层转换到类别空间
|
|