卷积卷积层 全连接层 局部连接权重共享。通过限制每个输出只连局部窗口、所有位置共享同一套权重把参数量从 H×W×H′×W′ 降到 K×K 核大小同时保留提取局部特征的能力。这是 CNN 高效的根本原因。平移不变性原则权重只与相对偏移 (a,b) 有关与绝对位置 (i,j) 无关局部性原则滑动窗口卷积层一个三通道卷积核示例卷积核的取值和参数都是可以学习的东西卷积核不同的取值可以产生不同的效果代码实现X是我们的输入K是卷积核Y是结果通过计算得到二位互相关运算默认步长为1卷积层的实现格式参见“PyTorch 神经网络基础”章节定义weightbias的值定义前向传递函数forward引用corr2d()函数计算特征矩阵通过仅查看“输入-输出”对来学习由X生成Y的卷积核*要记得清空梯度l.sum().backward()反向计算梯度存放在weight.grad中conv2d.weight.data[:] - lr * conv2d.weight.grad更新权重凡是需要更新、学习的参数权重、偏置就是反向传播最终落脚点神经网络训练目的就是算损失对权重的梯度权重天然是反向传播终点卷积层里的填充和步幅当卷积核的维度越大得到的特征矩阵维度越小或者说经过多轮卷积核操作后特征矩阵的维度不断减小。也是为了防止丢失边缘的像素填充定义在输入周围额外增加多的行和列一般的填充规则保证输入输出的维度不变步幅当我们卷积核的维度比输入维度小得多则需要更多的层数来使得输出特征矩阵维度大小合适这样就需要我们调整步幅来得到合适维度的特征矩阵定义滑动的步长具体的实现我们创建一个高度和宽度为3的二维卷积层并在所有侧边填充1个像素。给定高度和宽度为8的输入则输出的高度和宽度也是8。padding 1体现了填充当卷积核的高度和宽度不同时我们可以填充不同的高度和宽度使输出和输入具有相同的高度和宽度当使用高为5宽为3的卷积核时padding高宽*如果卷积核为偶数则填充无法对称将步幅设为2stride各个参数都能接受高宽卷积核的多输入输出通道RGB图片是个三通道红黄蓝也就是三个输入矩阵同一个像素位置有3个值分别表示红、绿、蓝的强度。每一个通道都有一个卷积核结果是所有通道卷积结果的和多输出通道每个输出通道 一组独立的卷积核 一种特征检测器当有多个卷积核的组数时会有多个输出*每个输出通道可以识别特定的一种模式1*1卷积核作用融合通道混合不同通道的信息具体的实现多输入通道的计算sum起来这里的corr2d是之前创建的多输出通道多个卷积核此时K不是3D是4D第0个维度表示有多少个卷积核1*1卷积核的实现我们可以将卷积层看作在每个像素位置应用的全连接层以个输入值转换为个输出值。 因为这仍然是一个卷积层所以跨像素的权重是一致的。 同时卷积层需要的权重维度为再额外加上一个偏置。直接计算X和K的维度构建X和K的矩阵直接调用矩阵乘法