ResNet 残差网络
目录
网络结构
残差块(Residual Block)
ResNet网络结构示意图
残差块(Residual Block)细节
基本残差块(ResNet-18/34)
Bottleneck残差块(ResNet-50/101/152)
残差连接类型对比
变体网络层数对比
关键设计总结
ResNet旨在解决深度神经网络中的梯度消失和退化问题。随着网络层数的增加,深层网络的性能反而可能下降,ResNet通过引入残差学习有效缓解了这一问题。

残差相当于‘短路网络’,在ResNet网络结构中,每个前置输入X除了正常的正向传播还会跨两层的直接传到激活函数的节点上
问题:为什么残差网络的层数可以更深(50层+),如何应对梯度消失问题?
‘短路’的设计+relu作为激活函数,使得在深层的网络甚至是输出层都带有原始的数据特征,加之relu的特性非1即0,梯度在连乘的过程中也可以得到较好的保留
网络结构
残差块(Residual Block)
ResNet的核心是残差块,其结构如下:
- 输入:x
- 输出:F(x)+x
其中:
- F(x) 是残差函数,通常由几层卷积层组成。
- x 是输入的直接映射(shortcut connection)。
ResNet网络结构示意图
整体架构(以ResNet-50为例)

残差块(Residual Block)细节
基本残差块(ResNet-18/34)

Bottleneck残差块(ResNet-50/101/152)

残差连接类型对比
| 类型 | 输入输出维度 | 实现方式 |
| Identity Mapping | 相同 | 直接相加(无额外操作) |
| Projection Shortcut | 不同 | 通过1x1卷积调整通道和尺寸 |
变体网络层数对比
| 网络名称 | 总层数 | 残差块组成(Bottleneck数量) |
| ResNet-18 | 18 | [2, 2, 2, 2] |
| ResNet-34 | 34 | [3, 4, 6, 3] |
| ResNet-50 | 50 | [3, 4, 6, 3](Bottleneck) |
| ResNet-101 | 101 | [3, 4, 23, 3] |
| ResNet-152 | 152 | [3, 8, 36, 3] |
关键设计总结
- 跳跃连接:解决梯度消失,允许直接传递原始信号。
- Bottleneck结构:通过1x1卷积压缩和扩展通道数,减少计算量。
- 分阶段降采样:通过步幅2的卷积逐步缩小特征图尺寸,扩大感受野。
- 全局平均池化:替代全连接层,减少参数量,防止过拟合。

反向传播时跟loss比较接近的层通过残差的设计可以更好地传回前面,对参数进行调整

残差单元:先用1*1的卷积核提取特征让3*3的卷积核需要学习的参数减少,最后再用1*1的卷积核升维(增加卷积核的数量--增加通道数)


问题:keras框架中,DenseNet网络中参数‘growth_rate’的含义?
在Keras的DenseNet中,`growth_rate` 是一个关键超参数,用于控制网络的特征扩展速度和模型复杂度。
`growth_rate` 的定义:
`growth_rate`(通常记为 `k`)表示每个密集层(Dense Layer) 输出的特征图(Channel)数量。
每个密集层会生成 `k` 个新特征图,并通过通道拼接(Concatenation) 与之前所有层的特征图合并,作为下一层的输入。
`growth_rate` 的作用:
1. 特征复用与扩展
DenseNet中,每个密集层的输入是前面所有层输出的拼接。
若当前层是第 `l` 层,输入通道数为 `m + k*(l-1)`(`m` 为初始输入通道数),输出通道数增加 `k`。
`growth_rate` 控制每一层新增的特征图数量,直接影响网络的宽度。
2. 计算效率与模型复杂度
较小的 `k`(如 `k=12`)会限制特征图增长,降低计算量,但可能损失表达能力。
较大的 `k`(如 `k=32`)会增加模型容量,但计算成本和内存占用也会显著上升。
3. Bottleneck层设计
在用户提供的代码中,`1x1卷积`(输出通道为 `4*k`)用于压缩特征图,减少后续 `3x3卷积` 的计算量(输出通道为 `k`)。
这是DenseNet-B(Bottleneck版本)的典型设计,通过 `growth_rate` 控制Bottleneck结构的压缩比例。
DenseNet中的一个密集块(Dense Block) 的实现:
# 输入x经过BN→ReLU→1x1卷积(压缩到4*k通道)→BN→ReLU→3x3卷积(输出k通道)
x1 = layers.Conv2D(4 * growth_rate, 1, ...)(x1) # Bottleneck压缩
x1 = layers.Conv2D(growth_rate, 3, ...)(x1) # 生成k个特征图
x = layers.Concatenate()([x, x1]) # 通道拼接
`growth_rate` 决定了最终输出的特征图数量(`k`)。
每个密集层通过拼接操作,使得特征图数量逐层增长 `k`,形成密集连接。
典型取值与影响

相关文章:
ResNet 残差网络
目录 网络结构 残差块(Residual Block) ResNet网络结构示意图 残差块(Residual Block)细节 基本残差块(ResNet-18/34) Bottleneck残差块(ResNet-50/101/152) 残差连接类型对比 变体网…...
CAPL编程常见问题与解决方案深度解析
CAPL编程常见问题与解决方案深度解析 目录 CAPL编程常见问题与解决方案深度解析引言1. CAPL编程核心难点剖析1.1 典型问题分类2. 六大典型问题场景解析案例1:定时器资源竞争导致逻辑错乱2.1.1 问题现象2.1.2 根因分析2.1.3 解决方案案例2:大数据量报文处理引发性能瓶颈2.2.1 …...
信号处理以及队列
下面是一个使用C和POSIX信号处理以及队列的简单示例。这个示例展示了如何使用信号处理程序将信号放入队列中,并在主循环中处理这些信号。 #include <iostream> #include <csignal> #include <queue> #include <mutex> #include <thread…...
Linux pkill 命令使用详解
简介 pkill 命令用于根据进程名称、用户、组或其他属性终止进程。它是 procps-ng 包的一部分,通常比 kill 更受欢迎,因为它无需查找进程 ID (PID)。 常用选项 -<signal>, --signal <signal>:定义要发送给每个匹配进程的信号&am…...
react注意事项
1.状态的定义以及修改 2.排序用lodash进行排序 import _ from lodassh 3.利用className插件进行动态类名的使用 4.表单使用 5.react中获取dom...
【开源免费】基于SpringBoot+Vue.JS在线考试学习交流网页平台(JAVA毕业设计)
本文项目编号 T 158 ,文末自助获取源码 \color{red}{T158,文末自助获取源码} T158,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...
怎样在PPT中启用演讲者视图功能?
怎样在PPT中启用演讲者视图功能? 如果你曾经参加过重要的会议或者演讲,你就会知道,演讲者视图(Presenter View)对PPT展示至关重要。它不仅能帮助演讲者更好地掌控演讲节奏,还能提供额外的提示和支持&#…...
UE AController
定义和功能 AController是一种特定于游戏的控制器,在UE框架中用于定义玩家和AI的控制逻辑。AController负责处理玩家输入,并根据这些输入驱动游戏中的角色或其他实体的行为。设计理念 AController设计用于分离控制逻辑与游戏角色,增强游戏设计…...
H264原始码流格式分析
1.H264码流结构组成 H.264裸码流(Raw Bitstream)数据主要由一系列的NALU(网络抽象层单元)组成。每个NALU包含一个NAL头和一个RBSP(原始字节序列载荷)。 1.1 H.264码流层次 H.264码流的结构可以分为两个层…...
JAVA 接口、抽象类的关系和用处 详细解析
接口 - Java教程 - 廖雪峰的官方网站 一个 抽象类 如果实现了一个接口,可以只选择实现接口中的 部分方法(所有的方法都要有,可以一部分已经写具体,另一部分继续保留抽象),原因在于: 抽象类本身…...
反向代理模块b
1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说,反向代理就相当于…...
Nuitka打包python脚本
Python脚本打包 Python是解释执行语言,需要解释器才能运行代码,这就导致在开发机上编写的代码在别的电脑上无法直接运行,除非目标机器上也安装了Python解释器,有时候还需要额外安装Python第三方包,相当麻烦。 事实上P…...
pytorch线性回归模型预测房价例子
import torch import torch.nn as nn import torch.optim as optim import numpy as np# 1. 创建线性回归模型类 class LinearRegressionModel(nn.Module):def __init__(self):super(LinearRegressionModel, self).__init__()self.linear nn.Linear(1, 1) # 1个输入特征&…...
练习题 - DRF 3.x Caching 缓存使用示例和配置方法
在构建现代化的 Web 应用程序时,性能优化是一个非常重要的环节。尤其是在使用 Django Rest Framework (DRF) 开发 API 服务时,合理地利用缓存技术可以显著提高应用的响应速度和减轻数据库的负担。DRF 提供了多种缓存机制,包括基于内存、文件系统、数据库以及第三方缓存服务(…...
如何解压7z文件?8种方法(Win/Mac/手机/网页端)
7z 文件是一种高效的压缩文件格式,由 7 - Zip 软件开发者所采用。它运用独特的压缩算法,能显著缩小文件体积,便于存储与传输各类数据,像软件安装包、大型资料集等。但要使用其中内容,就必须解压,因为处于压…...
python学opencv|读取图像(五十)使用addWeighted()函数实现图像加权叠加效果
【1】引言 前序学习进程中,学习了图像互相叠加的不同操作方法,包括add()函数直接叠加BGR值和使用bitwise()函数对BGR值进行按位计算叠加等,相关文章链接包括且不限于: python学opencv|读取图像(四十二)使…...
window中80端口被占用问题
1,查看报错信息 可以看到在启动项目的时候,8081端口被占用了,导致项目无法启动。 2,查看被占用端口的pid #语法 netstat -aon|findstr :被占用端口#示例 netstat -aon|findstr :8080 3,杀死进程 #语法 taikkill /pid…...
06-机器学习-数据预处理
数据清洗 数据清洗是数据预处理的核心步骤,旨在修正或移除数据集中的错误、不完整、重复或不一致的部分,为后续分析和建模提供可靠基础。以下是数据清洗的详细流程、方法和实战示例: 一、数据清洗的核心任务 问题类型表现示例影响缺失值数值…...
电梯系统的UML文档12
5.2.1 DoorControl 的状态图 图 19: DoorControl 的状态图 5.2.2 DriveControl 的状态图 图 20: DriveControl 的状态图 5.2.3 LanternControl 的状态图 图 21: LanternControl 的状态图 5.2.4 HallButtonControl 的状态图 图 22: HallButtonControl 的状态图 5.2.5 CarB…...
萌新学 Python 之运算符
Python 中运算符包括:算术运算符、比较运算符、逻辑运算符、赋值运算符、位运算符、海象运算符 算术运算符:加 减 - 乘 * 除 / 取整 // 求余 % 求幂 ** 注意:取整时,一正一负整除,向下取整 比如 5 // …...
STM32主从定时器实战:用CubeMX搞定PWM移相+动态调占空比(附G474配置)
STM32主从定时器实战:CubeMX图形化配置PWM移相与动态调占空比 在电力电子和电机控制领域,精确的PWM信号控制是系统高效运行的关键。对于需要多路相位可调PWM的应用场景,如交错并联DC/DC变换器、三相逆变器等,传统的手动寄存器配置…...
从‘能工作’到‘优秀’:手把手教你为你的Buck/Boost电路挑选和优化MOSFET驱动
从‘能工作’到‘优秀’:手把手教你为Buck/Boost电路挑选和优化MOSFET驱动 在开关电源设计中,MOSFET的选择和驱动优化往往是决定整体效率的关键因素。许多工程师能够设计出"能工作"的电路,但要达到"优秀"的性能指标&…...
家庭实验室:树莓派控制OpenClaw调用远程Qwen3-32B
家庭实验室:树莓派控制OpenClaw调用远程Qwen3-32B 1. 为什么选择树莓派OpenClaw组合 去年冬天,我在整理家庭实验室设备时发现一个闲置的树莓派4B。这台信用卡大小的电脑曾经用来跑Home Assistant控制智能家居,但后来换了NUC主机就被束之高阁…...
ESP32烧录全攻略:从命令行到GUI工具,新手也能轻松搞定
ESP32烧录全攻略:从命令行到GUI工具,新手也能轻松搞定 第一次接触ESP32开发板时,那块小小的芯片里蕴藏着无限可能,但如何将自己的代码"装进"这个硬件大脑却成了拦路虎。记得我最初尝试烧录时,面对各种专业术…...
SEO排名专家的工作内容是什么_如何成为一名出色的SEO排名专家
<h2>SEO排名专家的工作内容是什么</h2> <p>SEO排名专家,全称搜索引擎优化专家,是一类致力于提升网站在搜索引擎中排名的专业人士。他们的工作内容涵盖了广泛的技术和策略,旨在让网站在搜索结果中获得更高的曝光率ÿ…...
【STM32F4系列】【HAL库】【实战解析】MPU6050 DMP姿态解算与I2C通信优化
1. MPU6050与DMP库基础解析 第一次接触MPU6050时,我被它小巧的体积和强大的功能震撼到了。这个售价不到10元的芯片,居然能同时测量三轴角加速度和三轴线加速度。在实际项目中,我发现直接读取原始数据并不难,但要想获得稳定的姿态信…...
AI写论文实用宝典,4款AI论文生成工具搞定各类论文写作!
在2025年的学术写作智能化浪潮中,越来越多的人开始依赖AI写论文工具进行创作。尽管这些工具的使用越来越普遍,但在撰写硕士、博士论文等较长篇幅的学术文章时,许多AI论文写作工具往往陷入缺乏理论深度和逻辑性不强的问题。普通的AI写专著或AI…...
从零封装一个 Vue 低代码表单组件:我是如何借鉴 FcDesigner 的设计思路的
从零封装一个 Vue 低代码表单组件:我是如何借鉴 FcDesigner 的设计思路的 低代码开发正在改变前端工程师的工作方式。作为一名长期深耕表单领域的前端开发者,我曾参与过多个企业级低代码平台的搭建,也经历过从零开始封装表单组件的完整周期。…...
效率提升:基于快马平台快速集成openclaw开发局域网协作工具
最近在团队协作开发中遇到了一个痛点:每次新成员加入局域网时,都需要手动配置设备信息才能互相访问,文件共享和实时沟通也依赖第三方工具,效率很低。于是尝试用openclaw结合InsCode(快马)平台快速搭建了一套本地化协作工具&#x…...
ST7565SPI嵌入式LCD驱动库:轻量、可移植、零内存分配
1. ST7565SPI 驱动库概述ST7565 是 Sitronix 公司推出的单芯片图形点阵 LCD 控制器,广泛应用于工业人机界面、便携式仪器仪表、智能穿戴设备等对功耗、成本与显示质量有综合要求的嵌入式场景。其典型分辨率为 12864 像素,内置 12864 bit 显示 RAM&#x…...
