深度学习篇---1*1卷积核的升维/降维
要理解 1×1 卷积核的升维与降维,核心是抓住 **“卷积核数量 = 输出特征图通道数”** 这一关键规律:用少于输入通道数的 1×1 卷积核实现降维,用多于输入通道数的 1×1 卷积核实现升维,且卷积核仅作用于每个像素点的通道维度(不改变宽高)。
一、先明确 2 个基础概念
在看升维 / 降维前,先记住 2 个前提,避免混淆:
- 输入 / 输出的结构:一张特征图可表示为
[批量大小, 输入通道数C_in, 高度H, 宽度W]
(比如输入是 1 张 RGB 图,就是[1, 3, 224, 224]
,C_in=3,H=W=224)。 - 1×1 卷积核的特性:它的尺寸是
[输出通道数C_out, 输入通道数C_in, 1, 1]
,只 “扫描” 每个像素点(不跨像素),仅对该像素的所有通道做 “加权求和”,最终输出 C_out 个新通道。
二、降维原理与实例(减少通道数)
原理
当设置的1×1 卷积核数量(C_out)< 输入通道数(C_in) 时,每个输出通道都是输入所有通道的 “压缩后特征”,从而减少总通道数(降维),同时降低计算量。
详细实例
假设我们有一个中间特征图(不是原始图片,是网络层输出的特征),结构为 [1, 16, 32, 32]
:
- 批量大小 = 1(1 张图),输入通道数 C_in=16(16 个不同特征通道),宽高 H=W=32(像素尺寸)。
- 现在用 8 个 1×1 卷积核 做卷积(C_out=8),卷积核尺寸是
[8, 16, 1, 1]
。
计算过程(聚焦 1 个像素):
- 取特征图上 1 个像素点,它有 16 个通道的值(比如
[a1, a2, ..., a16]
)。 - 每个 1×1 卷积核对应 1 组 16 个权重(比如第 1 个卷积核的权重是
[w11, w12, ..., w16]
),对 16 个通道值做加权求和:a1*w11 + a2*w12 + ... + a16*w16 = b1
(b1 是第 1 个输出通道的该像素值)。 - 8 个卷积核会分别计算出 8 个值(
b1~b8
),对应输出像素的 8 个通道。
最终结果:输出特征图结构变为 [1, 8, 32, 32]
,通道数从 16→8,实现降维,且宽高保持 32 不变。
三、升维原理与实例(增加通道数)
原理
当设置的1×1 卷积核数量(C_out)> 输入通道数(C_in) 时,每个输出通道都是输入通道的 “新组合特征”,通过增加组合数量来扩展通道数(升维),目的是提取更丰富的特征。
详细实例
假设我们有一个原始灰度图(不是彩色图),结构为 [1, 1, 28, 28]
(比如 MNIST 数据集的手写数字图):
- 批量大小 = 1,输入通道数 C_in=1(灰度图只有 1 个通道),宽高 H=W=28。
- 现在用 32 个 1×1 卷积核 做卷积(C_out=32),卷积核尺寸是
[32, 1, 1, 1]
。
计算过程(聚焦 1 个像素):
- 取灰度图上 1 个像素点,它只有 1 个通道的值(比如
a=5
,像素灰度值)。 - 每个 1×1 卷积核对应 1 个权重(比如第 1 个卷积核权重
w1=0.2
,第 2 个w2=0.5
...),对该像素值做加权(因为 C_in=1,就是简单相乘):5*0.2=1
(第 1 个输出通道值)、5*0.5=2.5
(第 2 个输出通道值)... 共 32 个值。 - 这 32 个值对应输出像素的 32 个通道,每个通道代表该像素的 “不同特征视角”(比如有的通道突出边缘,有的突出亮度)
最终结果:输出特征图结构变为 [1, 32, 28, 28]
,通道数从 1→32,实现升维,宽高仍保持 28 不变。
四、关键总结
操作 | 核心条件 | 目的 | 宽高变化 |
---|---|---|---|
降维 | 1×1 卷积核数量 < 输入通道数 | 减少计算量、压缩冗余特征 | 不变 |
升维 | 1×1 卷积核数量 > 输入通道数 | 扩展特征维度、提取更多信息 | 不变 |
简单来说,1×1 卷积核就像一个 “通道转换器”:想变少就少放几个核(降维),想变多就多放几个核(升维),且不改变图片的宽高大小。