Bootstrap

二维卷积计算方式

二维卷积计算方式

以keras构建的模型为例
输入的图像shape为 (28, 28, 3),分别表示 (H, W, channels)。
pytorch的输入shape为 (3,28, 28),分别表示 (channels,H, W)。

各层输出

各层计算结果:

  • 卷积层包含32个卷积核,每个卷积核的窗口大小为(3,3),不采用padding填充(padding=“valid”),窗口移动步长strides为1。因此,卷积层输出的矩阵高H为 (28 - 3 + 1) / strides = 26 ,因此输出矩阵(26, 26, 32)。若要保持输入输出矩阵的shape一致,需padding=“same”。
  • 池化层使用(2, 2)的窗口进行最大池化,下采样后得到输出矩阵 (13, 13, 32)
  • Flatten()层将 (13, 13, 32) 转平为一维向量
    在这里插入图片描述

卷积层计算方式

  • 对于shape为(28, 28, 3)输入矩阵,每个卷积核的shape为 (3, 3, 3)。即对于输入矩阵中每个channels下的(28, 28)矩阵, 都会有一个(3, 3) 的卷积窗口滑动并点积计算。三个窗口分别得到的值求和并加上偏置 b 作为卷积值,操作示例如下图所示:
    在这里插入图片描述

卷积翻转180度!

对两个矩阵做卷积运算的时候,作为卷积算子的矩阵要逆时针旋转180度,即
在这里插入图片描述
翻转为:
在这里插入图片描述
然后进行点积运算。

上面例子中,卷积核已翻转,各卷积核计算结果如下:
r1 = -1
r2 = -1
r3 = 1
结果为 r1 + r2 + r3 +b = 0

参考博客:

;