【问题标题】:How many parameters are in CNN filters?CNN过滤器中有多少个参数?
【发布时间】:2021-07-24 20:32:42
【问题描述】:

卷积神经网络的每个滤波器有多少个参数? 我的书说:

“在彩色图像中,每个滤镜本身就是一个 3D 滤镜。这意味着每个滤镜都有许多参数:(height x width x depth) = (3 x 3 x 3 = 27)。您可以看到处理彩色图像时网络复杂性如何增加,因为它必须优化更多参数。 ..”

这听起来像是说2 X 2 过滤器实际上是2 X 2 X 3,用于彩色图像。但是,Keras 中的参数功能似乎第一次将过滤器计为 3D,但随后仅计为 2D。

这是我的输出数据:

Layer (type) Output Shape Param #
conv2d (Conv2D) (None, 32, 32, 16) 208
max_pooling2d (MaxPooling2D) (None, 16, 16, 16) 0
conv2d_1 (Conv2D) (None, 16, 16, 32) 2080
max_pooling2d_1 (MaxPooling2 (None, 8, 8, 32) 0
conv2d_2 (Conv2D) (None, 8, 8, 64) 8256
max_pooling2d_2 (MaxPooling2 (None, 4, 4, 64) 0

所以在第一个示例中,我有 16 parameters x (2 x 2 x 3 filter) x 1 depthprevious layer + 16 biases = 208。所以在这个例子中,滤镜被算作 3D 滤镜,因为三个颜色通道中的每一个都可以有不同的值。

但是,如果您查看下一个值,我们有 32 parameters x (2 x 2 x 3 filter) x 16 depth of previous layer + 32 biases = 6176。获得2080 的唯一方法是在过滤器中省略 3。

我拥有的最后一个卷积层也会发生同样的事情。 我有64 parameters x (2 x 2 x 3 filter) x 32 depth of previous layer + 64 biases,它应该等于24,640,但只等于8256,大约是它应该是的值的1/3(它不完全是三分之一的唯一原因是因为还有64 个偏差)。

为什么会这样?我不明白为什么每个滤镜都没有 3 个通道,否则滤镜就不再是彩色滤镜了。

【问题讨论】:

    标签: tensorflow conv-neural-network


    【解决方案1】:

    在卷积中,当它们表示过滤器的形状为(高度 x 宽度 x 深度)时,“深度”是指来自前一个输入的通道数,它不一定是 RGB 图像(它可能来自之前的卷积)。

    对于第二个卷积如何有 2080 个参数而不是 6176,输入深度实际上是 16 个通道而不是三个,因为你的第一个卷积将通道数增加到 16,所以正确的计算是 (2 * 2 * 16 * 32) + 32 等于 2080。

    同样,对于您的第三个卷积,由于其输入与第二个卷积的输出相比有 32 个通道,因此其参数数量将等于 (2 * 2 * 32 * 64) + 64,即 8256 个参数。

    【讨论】:

      猜你喜欢
      • 2016-07-14
      • 2021-03-22
      • 2018-04-11
      • 2014-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-30
      相关资源
      最近更新 更多