当前位置: 首页 > news >正文

深度学习篇---1*1卷积核的升维/降维

要理解 1×1 卷积核的升维与降维,核心是抓住 **“卷积核数量 = 输出特征图通道数”** 这一关键规律:用少于输入通道数的 1×1 卷积核实现降维,用多于输入通道数的 1×1 卷积核实现升维,且卷积核仅作用于每个像素点的通道维度(不改变宽高)。

一、先明确 2 个基础概念

在看升维 / 降维前,先记住 2 个前提,避免混淆:

  1. 输入 / 输出的结构:一张特征图可表示为 [批量大小, 输入通道数C_in, 高度H, 宽度W](比如输入是 1 张 RGB 图,就是 [1, 3, 224, 224],C_in=3,H=W=224)。
  2. 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. 取特征图上 1 个像素点,它有 16 个通道的值(比如 [a1, a2, ..., a16])。
  2. 每个 1×1 卷积核对应 1 组 16 个权重(比如第 1 个卷积核的权重是 [w11, w12, ..., w16]),对 16 个通道值做加权求和:a1*w11 + a2*w12 + ... + a16*w16 = b1(b1 是第 1 个输出通道的该像素值)。
  3. 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 个像素点,它只有 1 个通道的值(比如 a=5,像素灰度值)。
  2. 每个 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 个值。
  3. 这 32 个值对应输出像素的 32 个通道,每个通道代表该像素的 “不同特征视角”(比如有的通道突出边缘,有的突出亮度)

最终结果:输出特征图结构变为 [1, 32, 28, 28],通道数从 1→32,实现升维,宽高仍保持 28 不变。

四、关键总结

操作核心条件目的宽高变化
降维1×1 卷积核数量 < 输入通道数减少计算量、压缩冗余特征不变
升维1×1 卷积核数量 > 输入通道数扩展特征维度、提取更多信息不变

简单来说,1×1 卷积核就像一个 “通道转换器”:想变少就少放几个核(降维),想变多就多放几个核(升维),且不改变图片的宽高大小。

http://www.dtcms.com/a/351736.html

相关文章:

  • Unity笔记(七)——四元数、延迟函数、协同程序
  • 【Linux】Keepalived + Nginx高可用方案
  • [pilot智驾系统] 驾驶员监控守护进程(dmonitoringd)
  • 从代码学习深度强化学习 - 多智能体强化学习 IPPO PyTorch版
  • pytorch_grad_cam 库学习笔记——基类ActivationsAndGradient
  • vue2 和 vue3 生命周期的区别
  • 【Android】不同系统API版本_如何进行兼容性配置
  • 2014-2024高教社杯全国大学生数学建模竞赛赛题汇总预览分析
  • VMDK 文件
  • 软考-系统架构设计师 计算机系统基础知识详细讲解二
  • springcloud篇5-微服务保护(Sentinel)
  • Spring Boot mybatis-plus 多数据源配置
  • 【CVE-2025-5419】(内附EXP) Google Chrome 越界读写漏洞【内附EXP】
  • Kafka面试精讲 Day 1:Kafka核心概念与分布式架构
  • Elasticsearch中的协调节点
  • 详解kafka基础(一)
  • JavaScript常用的算法详解
  • Cherry-pick冲突与Git回滚
  • Oracle跟踪及分析方法
  • 力扣100+补充大完结
  • MySql 事务 锁
  • 推荐系统学习笔记(十四)-粗排三塔模型
  • 庖丁解牛:深入解析Oracle SQL语言的四大分类——DML、DDL、DCL、TCL
  • KubeBlocks for Oracle 容器化之路
  • 高校党建系统设计与实现(代码+数据库+LW)
  • 从零开始的 Docker 之旅
  • HIVE的高频面试UDTF函数
  • 【软考论文】论面向对象建模方法(动态、静态)
  • 无人机倾斜摄影农田航线规划
  • HTML应用指南:利用GET请求获取中国银行人民币存款利率数据