【问题标题】:Backpropagation (through convolutional layer) and gradients in CNNCNN 中的反向传播(通过卷积层)和梯度
【发布时间】:2017-07-24 02:30:48
【问题描述】:

我正在学习使用卷积神经网络,并继续为此编写自己的框架。 我被困在必须通过网络反向传播误差(增量)并计算梯度的部分。我知道 CNN 中的过滤器是 3D 的,所以我们有一些过滤器的宽度、高度和深度。 前馈就好了。让我们看一下前馈步骤中计算某层输出的公式:

l层的filter的深度应该和前一层l-1的输出z的输出通道数(depth)相同 以进行卷积。所以在这里,在这个公式中,我们将前一层的输出和当前层的权重进行卷积,这是可行的,因为这两者中的第三坐标(深度)是相等的。现在,让我们检查一下错误反向传播的公式:

在这一个中,我们有 delta 和权重数组 w 的卷积,两者都来自第 l+1 层。现在这让我感到困惑,因为通常它们的第三坐标(深度)并不总是相等的。考虑 VGGNet 架构,让我们看一下过滤器数量变化的三个连续层:

...

CONV3-128:[112x112x128] 内存:112*112*128=1.6M 权重:(3*3*128)*128 = 147,456

POOL2:[56x56x128] 内存:56*56*128=400K 权重:0

CONV3-256:[56x56x256] 内存:56*56*256=800K 权重:(3*3*128)*256 = 294,912

...

在过滤器的数量从 128 个增加到 256 个之后(在 CONV3-256 层中),它具有上述激活(和误差增量)和权重的维度。但是,由于过滤器的深度(在这种情况下为 128)与其 delta 的第 3 维(在这种情况下为 256)不同,我如何执行这两个数组的卷积?非常感谢帮助的人。我觉得这很令人困惑,并且在这方面我没有在网上找到太多帮助。它大多没有得到很好的解释或被认为是“已知的”。

【问题讨论】:

    标签: machine-learning neural-network conv-neural-network convolution backpropagation


    【解决方案1】:

    你说得对,增量和权重的深度不同。但是过滤器的数量等于 Delta 的深度。 我的意思是您可以拥有一个大小为 (5x5x2) 的过滤器和一个大小为 (20x20x4) 的 delta,但这里要注意的是,您确实将拥有四个过滤器。 您可以通过构建一个小型 CNN 来检查这一点,您将看到除非此条件为真,否则前向传递将无效。

    【讨论】:

      猜你喜欢
      • 2017-01-12
      • 2017-09-27
      • 1970-01-01
      • 2020-05-27
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多