CNN中卷积层反向传播的步骤

数据挖掘 机器学习 卷积神经网络 反向传播
2022-02-09 18:40:37

想象一下,我在 CNN 中有以下层:

Conv-layer 1(无 reLU)[3 个过滤器@1x3x3] => ReLU-layer 1 => Maxpooling-layer 1 [2x2]

Conv-layer 2 (无 reLU) [10 个过滤器@3x4x4] => ReLU-layer 2 => Maxpooling-layer 2 [2x2]

我所知道的是,当“导出” Maxpooling-layer时,该池的最大值为 1(因为该值是唯一影响 CNN 结果的值),其他值取值为 0。

在这一步之后,我有了 reLU 层,其中当 x <= 0 时 reLU 层的导数为 0,当 x > 0 时为 1。

在最后一步,我有 Conv 层,但我不知道如何计算导数。如何计算该特定重量的整个增量?

如果有办法使用矩阵表示法计算这些权重的梯度,请告诉我。

符号

我使用的矩阵表示法如下:[过滤器数量 - 深度 - 行 - 列]。例如,当我说 [3 个过滤器 - 1 x 3 x 3] 时,我的意思是我有 3 个深度为 1、3 行和 3 列的过滤器(深度“相当于”“通道”)。

Conv 层中的步骤,使用我的符号

想象一下,我有一个形状为[depth:1, rows: 28, columns: 28]的输入X

然后,我有 conv 层,其中有3 个过滤器(您可以将过滤器称为 W),形状为[depth:1, rows:3, columns:3]

所以,我所做的是,一次使用 1 个过滤器,对输入 X 进行卷积,因此得到的矩阵具有以下形状 => [depth:1, rows: 26, columns: 26] (这是卷积 1 个过滤器的结果) . 因此,当我使用 3 个过滤器进行卷积时,生成的矩阵的形状为 [ depth:3 , rows: 26, columns: 26]。

在此之后,我将 ReLU 应用于生成的矩阵(3x26x26 矩阵)的每个值,然后应用具有 2 行 x 2 列窗口的非重叠 maxpooling。

1个回答

额外说明:我使用的矩阵表示法如下:[过滤器数量 - 深度 - 行 - 列]。例如,当我说 [3 个过滤器 - 1 x 3 x 3] 时,我的意思是我有 3 个深度为 1、3 行和 3 列的过滤器(深度“相当于”“通道”)。

Conv层的步骤:

想象一下,我有一个形状为[depth:1, rows: 28, columns: 28]的输入X

然后,我有 conv 层,其中有3 个过滤器(您可以将过滤器称为 W),形状为[depth:1, rows:3, columns:3]

所以,我所做的是,一次使用 1 个过滤器,对输入 X 进行卷积,因此得到的矩阵具有以下形状 => [depth:1, rows: 26, columns: 26] (这是卷积 1 个过滤器的结果) . 因此,当我使用 3 个过滤器进行卷积时,生成的矩阵的形状为 [ depth:3 , rows: 26, columns: 26]。

在此之后,我将 ReLU 应用于结果矩阵(3x26x26 矩阵)的每个值,然后应用具有 2 行 x 2 列窗口的非重叠 maxpooling。

如果对我解释的内容有任何疑问,请评论我。

注意:我正在编辑自己的答案,因为我没有 50 名发表评论的声誉。