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 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 个通道,否则滤镜就不再是彩色滤镜了。
在卷积中,当它们表示过滤器是(高度 x 宽度 x 深度)形状时,“深度”是指来自先前输入的通道数,它不一定是 RGB 图像(它可能是来自之前的卷积)。
关于第二个卷积如何有 2080 个参数而不是 6176 个参数,输入深度实际上是 16 个通道而不是三个,因为你的第一个卷积将通道数增加到 16,所以正确的计算是 (2 * 2 * 16 * 32) + 32 等于 2080.
同样,对于你的第三个卷积,由于它的输入有来自第二个卷积输出的 32 个通道,它的参数数量将等于 (2 * 2 * 32 * 64) + 64,即 8256 个参数。
卷积神经网络的每个过滤器有多少个参数? 我的书说:
"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 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 个通道,否则滤镜就不再是彩色滤镜了。
在卷积中,当它们表示过滤器是(高度 x 宽度 x 深度)形状时,“深度”是指来自先前输入的通道数,它不一定是 RGB 图像(它可能是来自之前的卷积)。
关于第二个卷积如何有 2080 个参数而不是 6176 个参数,输入深度实际上是 16 个通道而不是三个,因为你的第一个卷积将通道数增加到 16,所以正确的计算是 (2 * 2 * 16 * 32) + 32 等于 2080.
同样,对于你的第三个卷积,由于它的输入有来自第二个卷积输出的 32 个通道,它的参数数量将等于 (2 * 2 * 32 * 64) + 64,即 8256 个参数。