【发布时间】: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