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

Machine learning CNN中的反向传播(通过卷积层)和梯度,machine-learning,neural-network,conv-neural-network,convolution,backpropagation,Machine Learning,Neural Network,Conv Neural Network,Convolution,Backpropagation,我正在学习如何使用卷积神经网络,并为其编写了自己的框架。 我被困在必须通过网络反向传播误差(增量)并计算梯度的部分。我知道CNN中的过滤器是3D的,所以我们有一些过滤器的宽度、高度和深度。 前馈是好的。让我们看看前馈步骤中计算某一层输出的公式: 层l中滤波器的深度应与前一层l-1的输出z的输出通道数(深度)相同,以便进行卷积。在这里,在这个公式中,我们将前一层的输出和当前层的权重进行卷积,因为第三坐标(深度)在这两者中相等。现在,让我们检查错误反向传播的公式: 在这个例子中,我们有delta

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

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

在这个例子中,我们有delta和权重数组的卷积w,都来自层l+1。这让我很困惑,因为一般来说,它们的第三个坐标(深度)并不总是相等的。考虑VGNNET体系结构,让我们来看看三个连续的层,其中过滤器的数量发生变化:

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

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

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


在过滤器数量从128增加到256(在层CONV3-256中)之后,它具有上述激活维度(和误差增量)和权重。然而,由于滤波器的深度(本例中为128)与其增量的第三维(本例中为256)不同,我如何执行这两个阵列的卷积?非常感谢帮助我的人。我觉得这让人困惑,而且我在网上找不到这方面的帮助。它大多解释得很差,或者被认为是“已知的”。

你说得对,三角洲和权重的深度不会相等。但是过滤器的数量等于三角洲的深度。 我的意思是,您可以有一个大小为(5x5x2)的过滤器和大小为(20x20x4)的增量,但这里的问题是,实际上您将有四个过滤器。
您可以通过构建一个小型CNN来检查这一点,您将看到forwrad过程将无效,除非此条件为真。

您是对的,Delta和权重的深度不相等。但是过滤器的数量等于三角洲的深度。 我的意思是,您可以有一个大小为(5x5x2)的过滤器和大小为(20x20x4)的增量,但这里的问题是,实际上您将有四个过滤器。 您可以通过构建一个小型CNN来检查这一点,您将看到forwrad通行证将无效,除非此条件为真