CNN:卷积网络中设计1×1夹在主要卷积核如3×3前后的作用
话不多说直接上图举例:

像在 ResNet 的 Bottleneck 结构 中,1x1 卷积 被放置在 3x3 卷积 的前后,这种设计有以下几个关键作用和优势:
1. 降低计算复杂度
- 问题:直接使用 3x3 卷积计算量较大,尤其是当输入和输出通道数较多时。
- 解决方案:
- 在 3x3 卷积之前,使用 1x1 卷积将输入通道数减少(通常减少到原来的 1/4)。
- 在 3x3 卷积之后,使用 1x1 卷积将通道数恢复到目标输出通道数。
- 效果:
- 通过减少中间特征图的通道数,显著降低了 3x3 卷积的计算量。
2. 减少参数量
- 问题:3x3 卷积的参数量与输入和输出通道数成正比,当通道数较多时,参数量会非常大。
- 解决方案:
- 使用 1x1 卷积先减少通道数,再使用 3x3 卷积,最后恢复通道数。
- 效果:
- 这种设计可以大幅减少参数量,从而降低模型的存储需求和过拟合风险。
3. 跨通道信息融合
- 问题:3x3 卷积主要关注局部空间特征,对跨通道信息的融合能力有限。
- 解决方案:
- 1x1 卷积可以在不改变空间尺寸的情况下,对通道维度进行线性组合,从而实现跨通道信息融合。
- 效果:
- 增强了特征的表达能力。
4. 非线性增强
- 问题:单纯的 3x3 卷积只能提取线性特征。
- 解决方案:
- 在 1x1 卷积和 3x3 卷积之间加入非线性激活函数(如 ReLU)。
- 效果:
- 引入了更多的非线性,增强了模型的表达能力。
5. Bottleneck 结构的具体设计
Bottleneck 结构通常由以下三部分组成:
-
1x1 卷积(降维):
- 输入通道数: C i n C_{in} Cin
- 输出通道数: C m i d = C i n / 4 C_{mid} = C_{in} / 4 Cmid=Cin/4
- 作用:减少通道数,降低计算量。
-
3x3 卷积(空间特征提取):
- 输入通道数: C m i d C_{mid} Cmid
- 输出通道数: C m i d C_{mid} Cmid
- 作用:提取局部空间特征。
-
1x1 卷积(升维):
- 输入通道数: C m i d C_{mid} Cmid
- 输出通道数: C o u t C_{out} Cout
- 作用:恢复通道数,完成特征变换。
6. 计算量对比
假设:
- 输入特征图尺寸: H × W × C i n H \times W \times C_{in} H×W×Cin
- 输出特征图尺寸: H × W × C o u t H \times W \times C_{out} H×W×Cout
- 3x3 卷积核尺寸: 3 × 3 × C i n × C o u t 3 \times 3 \times C_{in} \times C_{out} 3×3×Cin×Cout
- Bottleneck 结构:
- 第一个 1x1 卷积: 1 × 1 × C i n × C m i d 1 \times 1 \times C_{in} \times C_{mid} 1×1×Cin×Cmid
- 3x3 卷积: 3 × 3 × C m i d × C m i d 3 \times 3 \times C_{mid} \times C_{mid} 3×3×Cmid×Cmid
- 第二个 1x1 卷积: 1 × 1 × C m i d × C o u t 1 \times 1 \times C_{mid} \times C_{out} 1×1×Cmid×Cout
计算量对比:
- 直接使用 3x3 卷积的计算量:
H × W × C i n × C o u t × 3 × 3 H \times W \times C_{in} \times C_{out} \times 3 \times 3 H×W×Cin×Cout×3×3 - Bottleneck 结构的计算量:
H × W × C i n × C m i d × 1 × 1 + H × W × C m i d × C m i d × 3 × 3 + H × W × C m i d × C o u t × 1 × 1 H \times W \times C_{in} \times C_{mid} \times 1 \times 1 + H \times W \times C_{mid} \times C_{mid} \times 3 \times 3 + H \times W \times C_{mid} \times C_{out} \times 1 \times 1 H×W×Cin×Cmid×1×1+H×W×Cmid×Cmid×3×3+H×W×Cmid×Cout×1×1
通常 C m i d = C i n / 4 C_{mid} = C_{in} / 4 Cmid=Cin/4,因此 Bottleneck 结构的计算量远小于直接使用 3x3 卷积。
7. 总结
Bottleneck 结构中 1x1 卷积的作用:
- 降低计算复杂度和参数量。
- 实现跨通道信息融合。
- 增强非线性表达能力。
这种设计使得 ResNet 可以更高效地训练更深的网络,同时保持较强的特征提取能力。
相关文章:
CNN:卷积网络中设计1×1夹在主要卷积核如3×3前后的作用
话不多说直接上图举例: 像在 ResNet 的 Bottleneck 结构 中,1x1 卷积 被放置在 3x3 卷积 的前后,这种设计有以下几个关键作用和优势: 1. 降低计算复杂度 问题:直接使用 3x3 卷积计算量较大,尤其是当输入和…...
esp8266 rtos sdk开发环境搭建
1. 安装必要的工具 1.1 安装 Git Git 用于从远程仓库克隆代码,你可以从Git 官方网站下载 Windows 版本的安装程序。安装过程中可保持默认设置,安装完成后,在命令提示符(CMD)或 PowerShell 中输入git --version&#…...
【深度学习】矩阵的核心问题解析
一、基础问题 1. 如何实现两个矩阵的乘法? 问题描述:给定两个矩阵 A A A和 B B B,编写代码实现矩阵乘法。 解法: 使用三重循环实现标准矩阵乘法。 或者使用 NumPy 的 dot 方法进行高效计算。 def matrix_multiply(A, B):m, n …...
DeepSeek模型昇腾部署优秀实践
2024年12月26日,DeepSeek-V3横空出世,以其卓越性能备受瞩目。该模型发布即支持昇腾,用户可在昇腾硬件和MindIE推理引擎上实现高效推理,但在实际操作中,部署流程与常见问题困扰着不少开发者。本文将为你详细阐述昇腾 De…...
从 Spring Boot 2 升级到 Spring Boot 3 的终极指南
一、升级前的核心准备 1. JDK 版本升级 Spring Boot 3 强制要求 Java 17 及以上版本。若当前项目使用 Java 8 或 11,需按以下步骤操作: 安装 JDK 17:从 Oracle 或 OpenJDK 官网下载,配置环境变量(如 JAVA_HOME&…...
mysql架构查询执行流程(图解+描述)
目录 mysql架构查询执行流程 图解 描述 mysql架构查询执行流程 图解 描述 用户连接到数据库后,由连接器处理 连接器负责跟客户端建立连接、获取权限、维持和管理连接 客户端发送一条查询给服务器 服务器先检查查询缓存,如果命中缓存,则立…...
20分钟 Bash 上手指南
文章目录 bash 概念与学习目的第一个 bash 脚本bash 语法变量的使用位置参数管道符号(过滤条件)重定向符号条件测试命令条件语句case 条件分支Arrayfor 循环函数exit 关键字 bash 脚本记录历史命令查询文件分发内容 bash 概念与学习目的 bash࿰…...
事故02分析报告:慢查询+逻辑耦合导致订单无法生成
一、事故背景与现象 时间范围 2022年2月3日 18:11~18:43(历时32分钟) 受影响系统 系统名称角色影响范围dc3订单数据库主库订单生成、事务回滚dc4订单数据库从库数据同步、容灾切换 业务影响 核心业务:手机点餐、C扫B支付订单无法推送至…...
vant2 vue2 两个输入框联动验证遇到的问题
需求是两个输入框,一个输上限A,一个输下限B <van-fieldv-model"formData.upperLimit"name"upperLimit"type"number"label"上限"required:formatter"formatter"/><van-fieldv-model"for…...
硬件工程师入门教程
1.欧姆定律 测电压并联使用万用表测电流串联使用万用表,红入黑出 2.电阻的阻值识别 直插电阻 贴片电阻 3.电阻的功率 4.电阻的限流作用 限流电阻阻值的计算 单位换算关系 5.电阻的分流功能 6.电阻的分压功能 7.电容 电容简单来说是两块不连通的导体加上中间的绝…...
如何使用Docker搭建哪吒监控面板程序
哪吒监控(Nezha Monitoring)是一款自托管、轻量级的服务器和网站监控及运维工具,旨在为用户提供实时性能监控、故障告警及自动化运维能力。 文档地址:https://nezha.wiki/ 本章教程,使用Docker方式安装哪吒监控面板,在此之前,你需要提前安装好Docker. 我当前使用的操作系…...
python-leetcode 45.二叉树转换为链表
题目: 给定二叉树的根节点root,请将它展开为一个单链表: 展开后的单链表应该使用同样的TreeNode,其中right子指针指向链表中的下一个节点,而左子指针始终为空 展开后的单链表应该与二叉树先序遍历顺序相同 方法一:二叉树的前序…...
uni小程序wx.switchTab有时候跳转错误tab问题,解决办法
在一个子页面里面使用uni.switchTab或者wx.switchTab跳转到tab菜单的时候,先发送了一个请求,然后执行跳转到tab菜单,但是这个时候,出错了........也是非常的奇怪,不加请求就没问题......但是业务逻辑就是要先执行某个请…...
【一起学Rust | 框架篇 | Tauri2.0框架】在Tauri应用中设置Http头(Headers)
文章目录 前言一、配置准备1. 检查版本2. 使用条件3. 支持的请求头(并不是全部支持) 二、使用步骤1. 如何配置header2. 框架集成1. 对于Vite系列、Nuxt、Next.js这种前端框架Vite系列框架Angular系列框架Nuxt系列框架Next.js系列框架 2. 对于Yew和Leptos…...
STM32G473VET6 在 Keil MDK 下手动移植 FreeRTOS 指南
下面将详细介绍如何在 Keil MDK 环境下将 FreeRTOS 手动移植到 STM32G473VET6 微控制器上。内容涵盖工程创建、获取源码、文件组织、移植层适配、测试任务编写以及编译调试等步骤。 1. 工程搭建(Keil 项目创建) 创建基础工程:首先准备一个基…...
波导阵列天线 学习笔记11双极化全金属垂直公共馈电平板波导槽阵列天线
摘要: 本communicaition提出了一种双极化全金属垂直公共馈电平板波导槽阵列天线。最初提出了一种公共馈电的单层槽平板波导来实现双极化阵列。此设计消除了传统背腔公共馈电的复杂腔体边缘的必要性,提供了一种更简单的天线结构。在2x2子阵列种发展了宽十…...
DeepSeek-R1自写CUDA内核跑分屠榜:开启GPU编程自动化新时代
引言 在AI领域,深度学习模型的性能优化一直是研究者们关注的核心。最近,斯坦福和普林斯顿的研究团队发现,DeepSeek-R1生成的自定义CUDA内核不仅超越了OpenAI的o1和Claude 3.5 Sonnet,还在KernelBench框架中取得了总排名第一的好成…...
001 Kafka入门及安装
Kafka入门及安装 文章目录 Kafka入门及安装1.介绍Kafka的基本概念和核心组件 2.安装1.docker快速安装zookeeper安装kafka安装 添加topic删除topickafka-ui安装 2.Docker安装(SASL/PLAIN认证配置-用户名密码) 来源参考的deepseek,如有侵权联系…...
2024 年出现的 11 大数据收集趋势
数据收集趋势的出现是对技术进步、企业需求和市场波动的回应,我们对 2025 年的预测涵盖了所有方面。物联网和人工智能等前沿技术将改变组织收集和处理数据的方式,法规将促使它们更加细致地对待数据,而消费者对增强现实和虚拟现实的兴趣将为数…...
动态内容加载的解决方案:Selenium与Playwright对比故障排查实录
方案进程 2024-09-01 09:00 | 接到亚航航班数据采集需求 2024-09-01 11:30 | 首次尝试使用Selenium遭遇Cloudflare验证 2024-09-01 14:00 | 切换Playwright方案仍触发反爬机制 2024-09-01 16:30 | 引入爬虫代理IPUA轮换策略 2024-09-02 10:00 | 双方案完整实现并通过压力测试故…...
反激式开关电源双环PID控制避坑指南:从理论到MATLAB仿真
反激式开关电源双环PID控制避坑指南:从理论到MATLAB仿真 反激式开关电源因其结构简单、成本低廉等优势,在中小功率场合广泛应用。然而,其控制系统的设计却暗藏诸多陷阱,尤其是电压环与电流环的双环PID控制,稍有不慎就会…...
项目实战:从零构建基于Miniedit与Floodlight的SDN可视化拓扑
1. 为什么需要SDN可视化工具? 刚接触软件定义网络(SDN)时,最让我头疼的就是命令行配置。记得第一次用Mininet创建拓扑,光是记住那些addHost、addSwitch命令就花了半天时间,更别提调试链路参数时频繁出现的报…...
3个步骤实现BetterGenshinImpact多账号协同管理:高效掌控多角色游戏体验
3个步骤实现BetterGenshinImpact多账号协同管理:高效掌控多角色游戏体验 【免费下载链接】better-genshin-impact 📦BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条…...
CH343芯片驱动安装全攻略:从Windows到Linux再到MacOS,一篇搞定所有系统
CH343芯片跨平台驱动安装实战指南:从Windows到Linux再到MacOS的完整解决方案 第一次拿到基于CH343芯片的开发板时,我对着电脑上"无法识别的USB设备"提示发呆了十分钟。作为一款支持6Mbps高速传输的USB转串口芯片,CH343在嵌入式开发…...
Qwen3-Reranker完整指南:支持Markdown/HTML文档解析的增强版方案
Qwen3-Reranker完整指南:支持Markdown/HTML文档解析的增强版方案 1. 引言:重新定义文档检索的精准度 在日常工作中,你是否遇到过这样的困扰:用关键词搜索文档时,系统返回的结果看似相关,实际上却偏离了你…...
避坑指南:在Ubuntu 20.04上安装MinkowskiEngine时,如何解决OpenBLAS依赖导致PyTorch变CPU版的诡异问题
深度解析Ubuntu 20.04安装MinkowskiEngine时的OpenBLAS依赖陷阱与解决方案 在Ubuntu 20.04上配置深度学习环境时,MinkowskiEngine作为处理稀疏3D数据的利器,其安装过程往往暗藏玄机。许多开发者在安装过程中都会遇到一个令人困惑的现象:明明已…...
Ostrakon-VL集成VSCode Codex:智能代码辅助下的视觉应用开发
Ostrakon-VL集成VSCode Codex:智能代码辅助下的视觉应用开发 1. 开篇:当视觉AI遇上智能编程助手 想象一下这样的开发场景:你正在构建一个基于Ostrakon-VL的视觉分析应用,需要处理摄像头采集的图像数据。传统方式下,你…...
别再手动调格式了!用IEEEtran LaTeX模板搞定双栏论文排版(附完整代码包)
IEEEtran LaTeX模板实战:从零开始打造完美双栏学术论文 第一次投稿IEEE Trans系列期刊时,我花了整整三天调整论文格式——作者列表的星号标记总是错位,跨栏表格在PDF里溢出页面,算法伪代码的编号莫名其妙消失。直到实验室师兄丢给…...
[AI应用框架/Java] Spring AI 应用开发指南<>概述、快速入门鼻
本文能帮你解决什么? 1. 搞懂FastAPI异步(async/await)到底在什么场景下能真正提升性能。 2. 掌握在FastAPI中正确使用多线程处理CPU密集型任务的方法。 3. 避开常见的坑(比如阻塞操作、数据库连接池耗尽、GIL限制)。 …...
AI:词向量模型详解(Word Embedding)
词向量模型详解(Word Embedding) 词向量(Word Embedding)是自然语言处理(NLP)中最基础且影响深远的表示学习方法之一。它将离散的词汇映射为低维、稠密的实数向量,使计算机能够“理解”词语之间…...
