1. 互相关运算
- 严格来说,卷积层是一个错误的叫法,因为它本质上是互相关运算而不是卷积运算。
- 我们暂时忽略通道看看二维图像数据和隐藏表示。那么输出大小可以表示为
- 我们自己实现一个二维互相关运算
2. 卷积层
- 卷积层中有两个参数:卷积核权重和标量偏置
- 和之前全连接层一样,在训练基于卷积层的模型时,我们也随机初始化卷积核权重
- 在
__init__
构造函数中,将weight
和bias
声明为两个模型参数,前向传播函数调用corr2d
函数并添加偏置
3. 图像中的目标边缘检测
- 如下是卷积层的一个简单应用:通过找到像素变化的位置,来检测图像中不同颜色的边缘
- 首先构造一个 6 × 8 6×8 6×8 像素的黑白图像,中间四列为黑色,其余像素为白色
- 接下来构造一个高度为1,宽度为2的卷积核K。当进行互相关运算时,如果水平相邻的两元素相同,则输出为零,否则输出为非零
- 现在,我们对参数X(输入)和K(卷积核)执行互相关运算。 如下所示,输出Y中的1代表从白色到黑色的边缘,-1代表从黑色到白色的边缘,其他情况的输出为0
4. 学习卷积核
- 让我们有更加复杂的需求的时候,那么我们就不可能手动设计滤波器了,那么我们是否可以学习有 X 生成 Y 的卷积核呢?
- 现在让我们看看是否可以通过仅查看“输入-输出”对来学习由X生成Y的卷积核。 我们先构造一个卷积层,并将其卷积核初始化为随机张量。接下来,在每次迭代中,我们比较Y与卷积层输出的平方误差,然后计算梯度来更新卷积核。为了简单起见,我们在此使用内置的二维卷积层,并忽略偏置
- 10次迭代后,误差降得已经足够低了,现在再看看我们所学的卷积核的权重张量:可以看到非常接近我们之前定义的卷积核 K
5. 互相关和卷积
6. 特征映射和感受野
- 下图输出的卷积层有时被称为特征映射,因为它可以被视为一个输入映射到下一层的空间维度的转换器
- 在卷积神经网络中,对于某一层的任意元素 x,其感受野是指在前向传播期间可能影响 x 计算的所有元素(来自所有先前层)
- 以下面的输出的第一个元素19为例,其感受野就是输入矩阵的蓝色部分
- 假设当前的输出为 Y,其大小为 2 × 2 2×2 2×2,我们再在其后面附加一个卷积层,该卷积层以 Y 为输入,输出单个元素 z。那么此时 z 的感受野就是 Y 中的四个元素。而 Y 的感受野就是输入矩阵中的九个元素。