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

1x1卷积如何保留已学习特征?2D与3D卷积计算逻辑相关疑问

2D/3D卷积认知澄清与1x1卷积特征保留原理解答

1 2D卷积认知校验

你对2D卷积的理解是正确的。
Keras的Conv2D中,每个输出特征图对应1个形状为(kernel_size, kernel_size, 输入通道数)的三维卷积核:如果拆分为单通道维度计算,就是为每个输入通道分配独立的二维子核,输出前会把所有输入通道的卷积结果逐像素相加,再经过激活函数输出。
对应你给出的示例:

i = Input(shape=(64,64,3))
x = Conv2D(filters=32,kernel_size=(3,3),padding='same',activation='relu') (i)

输出32个特征图,单通道二维子核的总数量为输入通道数 × 输出特征图数 = 3×32=96,和你的计算结果一致。

2 3D卷积认知校验

你对3D卷积的结论正确,但需要补充核心逻辑差异:
Conv3D的核心是在三个空间/时序维度上滑窗计算,每个输出特征图对应1个形状为(kernel_depth, kernel_height, kernel_width, 输入通道数)的四维卷积核,核的第四维自动对齐输入通道数,因此输出N个特征图就只需要N个独立的完整3D卷积核。
对应你的示例:

i = Input(shape=(1,64,64,3))
x = Conv3D(filters=32,kernel_size=(3,3,3),padding='same',activation='relu') (i)

确实仅需要32个独立的3D卷积核即可生成32个输出特征图。

3 1x1卷积的特征保留原理

你对1x1卷积的参数量计算是正确的,对应示例:

i = Input(shape=(64,64,3))
x = Conv2D(filters=32,kernel_size=(3,3),padding='same',activation='relu') (i)
x = Conv2D(filters=8,kernel_size=(1,1),padding='same',activation='relu') (x)

1x1卷积层的总参数量为1×1×32×8=256,和你的计算结果一致。

关于特征保留的核心逻辑如下:

  • 首先需要澄清:1x1卷积的计算不是“合并32个像素为1个”,而是对每个空间位置(i,j)上的32个通道值做线性组合,输出该位置对应8个新通道的数值,全程不改变特征图的宽高,完全不会损失空间维度的信息。
  • 每个输出通道对应的32个权重是可训练的:模型在训练过程中会自动学习权重分配,对当前任务有用的特征会被分配较高的权重保留,冗余特征、噪声会被分配接近0的权重过滤。比如8个输出通道可以分别对应边缘、纹理、颜色等不同维度的综合特征,每个特征都是原有32个输入特征的针对性组合,只会剔除无效冗余,不会丢失有用信息。
  • 本质上1x1卷积就是作用在通道维度的全连接层,对所有空间位置共享权重,在降维的同时完成跨通道的特征融合,这也是它被广泛用在轻量化网络结构中的核心原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:06:03