如何计算CIFAR-10数据集对应卷积神经网络各卷积层参数?
计算CIFAR-10数据集下该模型卷积层参数的方法
首先得明确卷积层参数计算的核心公式,这是推导的基础:
卷积层参数总数 = (卷积核尺寸高 × 卷积核尺寸宽 × 输入通道数 + 1) × 卷积核数量
这里的+1是每个卷积核对应的偏置项——每个卷积核都会搭配一个单独的偏置参数。
因为我们针对的是CIFAR-10数据集,输入图像是32×32×3的RGB图,所以模型的input_shape为(32, 32, 3),接下来逐个分析代码里的卷积层:
1. 第一个卷积层:Conv2D(32, (3, 3), padding='same', activation='relu', input_shape=input_shape)
- 输入通道数:3(CIFAR-10的RGB三通道)
- 卷积核尺寸:3×3
- 卷积核数量:32
代入公式计算:(3×3×3 + 1) × 32 = (27 + 1) × 32 = 28 × 32 = 896
这一层的参数总数是896。
2. 第二个卷积层:Conv2D(32, (3, 3), activation='relu')
- 输入通道数:上一层卷积的输出通道数,也就是32(池化和Dropout层不会改变通道数量)
- 卷积核尺寸:3×3
- 卷积核数量:32
代入公式:(3×3×32 + 1) × 32 = (288 + 1) × 32 = 289 × 32 = 9248
这一层的参数总数是9248。
3. 第三个卷积层:Conv2D(64, (3, 3), padding='same', activation='relu')
中间的MaxPooling2D仅压缩特征图尺寸,不改变通道数,所以输入通道数还是上一层的32:
- 输入通道数:32
- 卷积核尺寸:3×3
- 卷积核数量:64
计算:(3×3×32 + 1) × 64 = (288 + 1) × 64 = 289 × 64 = 18496
这一层的参数总数是18496。
4. 第四个卷积层:Conv2D(64, (3, 3), activation='relu')
同样,MaxPooling2D不影响通道数,输入通道数为上一层的输出64:
- 输入通道数:64
- 卷积核尺寸:3×3
- 卷积核数量:64
计算:(3×3×64 + 1) × 64 = (576 + 1) × 64 = 577 × 64 = 36928
这一层的参数总数是36928。
如果后续还有卷积层,都可以用同样逻辑推导:只需要关注当前层的输入通道数(即上一层的输出通道数)、卷积核尺寸和数量,套入公式即可。
内容的提问来源于stack exchange,提问作者zucchinifries
相关产品推荐
相关产品推荐

