【发布时间】: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 depth 和 previous 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