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

不同输入与卷积核维度下TensorFlow的Conv2d工作原理是怎样的?

TensorFlow Conv2D运算逻辑解答

结论

你的理解完全正确,该场景下最终输出的shape确实为[1, 11, 11, 20]。

具体运算逻辑拆解

基础维度定义

你示例中的参数符合标准2D卷积的配置要求:

  • 输入shape [1, 13, 13, 10] 对应TensorFlow默认channels_last格式的四个维度:[批量大小, 输入高度, 输入宽度, 输入通道数]
  • 你描述的卷积核对应20个尺寸为3×3、通道数和输入通道数对齐(10)的卷积核,符合常规卷积的参数设置。

单卷积核计算过程

每个卷积核独立执行如下运算:

  1. 步长为默认的(1,1)、无padding的规则下,卷积核在输入的高度、宽度维度滑动,每次截取输入上3×3×10的局部感受野区域
  2. 卷积核和该局部区域做逐元素相乘后求和(即你提到的点积运算),得到1个标量值,对应输出特征图上的1个像素点
  3. 无padding时输出特征图的高/宽计算公式为:输入尺寸 - 卷积核尺寸 + 1,代入数值就是13 - 3 + 1 = 11,因此单个卷积核输出的特征图尺寸为11×11。

多卷积核拼接逻辑

20个卷积核各自独立完成上述计算,每个输出1张11×11的特征图,最终所有特征图在通道维度拼接,加上最前面的批量维度1,最终输出shape就是[1, 11, 11, 20]。

代码验证

你可以直接运行下方TensorFlow代码验证结果:

import tensorflow as tf

# 构造和你示例一致的输入
input_tensor = tf.random.normal(shape=(1, 13, 13, 10))
# 定义20个3×3卷积核、无padding的Conv2D层
conv2d_layer = tf.keras.layers.Conv2D(filters=20, kernel_size=3, padding="valid")
output_tensor = conv2d_layer(input_tensor)

print(output_tensor.shape)
# 运行输出为:TensorShape([1, 11, 11, 20])

补充说明

如果你提到的卷积核shape[20, 3, 3, 10]是显式的维度存储顺序,仅需对应调整TensorFlow的data_format参数为通道优先模式即可,核心计算逻辑和最终输出的数值结果完全一致,不会影响你对卷积运算逻辑的理解。

内容的提问来源于stack exchange,提问作者김민성

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:33:01