machine-learning - CNN 中的反向传播(通过卷积层)和梯度

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

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

l中滤波器的深度应与上一层l-1的输出z的输出 channel 数(深度)相同 为了进行卷积。所以在这里,在这个公式中,我们将前一层的输出和当前层的权重进行卷积,这是有效的,因为第三个坐标(深度)在这两者中是相等的。现在,让我们检查一下误差反向传播的公式:

在这个例子中,我们有 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)与其增量的第三维(在本例中为 256)不同,我如何执行这两个数组的卷积?非常感谢任何提供帮助的人。我觉得这很令人困惑,而且我在网上没有找到这方面的太多帮助。它大多没有得到很好的解释或被认为是“已知的”。

最佳答案

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

关于machine-learning - CNN 中的反向传播(通过卷积层)和梯度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42588047/

相关文章:

python - 为什么有些图像有第三维,而其他图像有 4?

R SVM 预测

performance - 测试数据性能评估中缺少预测标签

machine-learning - 强化学习、深度学习、深度强化学习有什么区别?

python - Keras 中的 "metrics"是什么?

python - 使用 keras 训练模型时出现 TypeError 和 ValueError

python - 使用 CNN 模型中的 channel 均值和标准差对训练数据进行归一化

opencv - 用于情感识别的分类数据集

tensorflow - 多输入深度学习模型中两个输入的平均值

python - 测试从头开始构建的神经网络 (XOR)