CNN 过滤器中有多少个参数?

How many parameters are in CNN filters?

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

"In color images, every filter is itself a 3D filter. This means every filter has a number of parameters: (height x width x depth) = (3 x 3 x 3 = 27). You can see how the network complexity increases when processing color images because it has to optimize more parameters..."

这听起来像是 2 X 2 滤镜对于彩色图像实际上是 2 X 2 X 3。但是Keras中的参数特征好像是第一次把filter算作3D,后面的时候就只有2D了。

这是我的输出数据:

图层(类型) 输出形状 参数#
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 个通道,否则滤镜就不再是彩色滤镜了。

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

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

同样,对于你的第三个卷积,由于它的输入有来自第二个卷积输出的 32 个通道,它的参数数量将等于 (2 * 2 * 32 * 64) + 64,即 8256 个参数。