想象一下,我在 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。