You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于TensorFlow Sequential模型Conv2D层参数计算的疑问

Conv2D层参数计算疑问解答

我无法理解自己构建的tf.keras.Sequential模型的summary输出。例如summary的前两行:

Layer (type)Output ShapeParam #
zero_padding2d (ZeroPadding2D)(None, 70, 70, 3)0
conv2d (Conv2D)(None, 64, 64, 32)4736

我不明白为何Conv2D层的参数是4736?64 * 64 * 32 的结果并不等于4736。我的模型代码如下:

tf.keras.Sequential([
       tf.keras.Input(shape=(64 , 64 ,3)),
       ## ZeroPadding2D with padding 3, input shape of 64 x 64 x 3
       tf.keras.layers.ZeroPadding2D(padding=3),
       ## Conv2D with 32 7x7 filters and stride of 1
       tf.keras.layers.Conv2D(
           filters = 32,
           kernel_size = 7,
           strides = (1,1)
       ),
       ## BatchNormalization for axis 3
       tf.keras.layers.BatchNormalization(
           axis=3
       ),
       ## ReLU
       tf.keras.layers.ReLU(),
       ## Max Pooling 2D with default parameters
       tf.keras.layers.MaxPooling2D(),
       ## Flatten layer
       tf.keras.layers.Flatten(),
       ## Dense layer with 1 unit for output & 'sigmoid' activation
       tf.keras.layers.Dense(1, activation='sigmoid')
   ])

参数计算逻辑说明

你混淆了输出特征图元素总数和可训练参数数量的概念:

Conv2D的可训练参数只和卷积核本身的配置有关,和输出特征图的尺寸(64×64)无关,具体计算方式如下:

  • 单个7×7卷积核的参数:卷积核宽 × 卷积核高 × 输入通道数 = 7×7×3 = 147
  • 32个卷积核的总权重参数:147 × 32 = 4704
  • 每个卷积核对应1个偏置项,32个卷积核共32个偏置参数
  • 总参数 = 4704 + 32 = 4736

而你用的64×64×32是该层输出特征图的所有元素个数,这是模型前向传播时生成的数据量,不是需要训练的参数数量,两者完全是不同的概念。

内容的提问来源于stack exchange,提问作者kirsanv43

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 06:47:27