帮助理解当下一层的滤波器和增量具有不同维度时如何计算卷积层的误差

数据挖掘 神经网络 美国有线电视新闻网 卷积 反向传播
2022-03-11 16:00:27

我正在尝试在 NumPy 中实现 CNN,以便更好地了解其内部工作原理

我的架构如下

  • 10张图像,1通道,28像素行和列(尺寸:(10X1X28X28))
  • 3个卷积滤波器。每个尺寸为 5X5。(尺寸:3X1X5X5)(步幅=1)
  • 第一个带维度的卷积输出 (10X3X24X24)
  • 第一个最大池化层(stride=2)
  • 具有尺寸的第一个最大池输出 (10X3X12X12)
  • 6个卷积滤波器。每个尺寸为 3X5X5(尺寸:6X3X5X5)(步幅=1)
  • 具有维度 (10X6X8X8) 的第二个卷积输出
  • 第二个最大池化层(stride=2)
  • 具有维度 (10X6X4X4) 的第二个最大池输出
  • 维度的第一个全连接层 (96X10)
  • 维度的第二个全连接层 (80X10)
  • 维度的输出层(10X10)(Softmax层)

使用反向传播,我已经能够计算出第二个卷积输出的误差,其尺寸为 10X6X8X8。我需要计算第一个最大池输出的误差。这涉及以下步骤

  1. 采用连接第一个最大池输出和第二个卷积输出的卷积滤波器。这具有尺寸(6X3X5X5)。
  2. 将第 3 和第 4 轴旋转 180 度。在代码中resulting_weight = np.rot90(np.rot90(weight,axes(2,3),axes=(2,3))
  3. 这将产生具有尺寸 (6X3X5X5) 的新旋转矩阵
  4. 在第二个卷积输出(10X6X8X8)和新旋转矩阵(6X3X5X5)的误差之间进行全卷积

由于尺寸不匹配,我不确定如何实施最后一步。完整的卷积运算应该产生一个尺寸为 (10X3X12X12) 的矩阵。仅当旋转矩阵具有尺寸 (3X6X5X5) 时,这才有可能。我们应该重新塑造旋转矩阵的尺寸(3X6X5X5)吗?还是我对 180 度旋转的理解有误?

0个回答
没有发现任何回复~