我正在学习使用卷积神经网络,然后我继续编写自己的框架。 我被困在我必须通过网络反向传播错误(增量)并计算渐变的部分。我知道CNN中的滤镜是3D的,所以我们有一些滤镜的宽度,高度和深度。 前馈很好。让我们看一下在前馈步骤中计算某层输出的公式:
图层 l 中滤镜的深度应与上一图层 l-1的输出 z 的输出通道数(深度)相同为了做卷积。所以在这里,在这个公式中,我们正在卷积前一层的输出和当前层的权重,这是有效的,因为这两个中的第三坐标(深度)相等。现在,让我们检查错误反向传播的公式:
在这一个中,我们有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的第三维(本例中为256)不同,如何对这两个数组进行卷积?非常感谢帮助的人。我发现这令人困惑,我在这方面没有找到太多帮助。它大部分解释不清或被认为是“已知”。
答案 0 :(得分:0)
您是对的,增量和权重的深度将不相等。但是过滤器的数量等于DELTAS的深度。 我的意思是,您可以有一个大小为(5x5x2)的过滤器和大小为(20x20x4)的增量,但这里要注意的是确实有四个过滤器。 您可以通过构建一个小的CNN进行检查,除非条件成立,否则您将看到前者通行证无效。