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]

关键设计总结
  1. 跳跃连接:解决梯度消失,允许直接传递原始信号。
  2. Bottleneck结构:通过1x1卷积压缩和扩展通道数,减少计算量。
  3. 分阶段降采样:通过步幅2的卷积逐步缩小特征图尺寸,扩大感受野。
  4. 全局平均池化:替代全连接层,减少参数量,防止过拟合。

反向传播时跟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`,形成密集连接。

典型取值与影响

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/961565.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

组件框架漏洞

一.基础概念 1.组件 定义:组件是软件开发中具有特定功能或特性的可重用部件或模块,能独立使用或集成到更大系统。 类型 前端 UI 组件:像按钮、下拉菜单、导航栏等,负责构建用户界面,提升用户交互体验。例如在电商 AP…

电脑无法开机,重装系统后没有驱动且驱动安装失败

电脑无法开机,重装系统后没有驱动且驱动安装失败 前几天电脑突然坏了,电脑卡住后,强制关机,再开机后开机马上就关机。尝试无数次开机后失败,进入BIOS界面,发现已经没有Windows系统了。重新安装系统后&…

NLP自然语言处理通识

目录 ELMO 一、ELMo的核心设计理念 1. 静态词向量的局限性 2. 动态上下文嵌入的核心思想 3. 层次化特征提取 二、ELMo的模型结构与技术逻辑 1. 双向语言模型(BiLM) 2. 多层LSTM的层次化表示 三、ELMo的运行过程 1. 预训练阶段 2. 下游任务微调 四、ELMo的…

二进制安卓清单 binary AndroidManifest - XCTF apk 逆向-2

XCTF 的 apk 逆向-2 题目 wp,这是一道反编译对抗题。 题目背景 AndroidManifest.xml 在开发时是文本 xml,在编译时会被 aapt 编译打包成为 binary xml。具体的格式可以参考稀土掘金 MindMac 做的类图(2014),下面的博…

Mac Electron 应用签名(signature)和公证(notarization)

在MacOS 10.14.5之后,如果应用没有在苹果官方平台进行公证notarization(我们可以理解为安装包需要审核,来判断是否存在病毒),那么就不能被安装。当然现在很多人的解决方案都是使用sudo spctl --master-disable,取消验证模式&#…

stack 和 queue容器的介绍和使用

1.stack的介绍 1.1stack容器的介绍 stack容器的基本特征和功能我们在数据结构篇就已经详细介绍了,还不了解的uu, 可以移步去看这篇博客哟: 数据结构-栈数据结构-队列 简单回顾一下,重要的概念其实就是后进先出,栈在…

【Rust自学】15.0. 智能指针(序):什么是智能指针及Rust智能指针的特性

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 15.0.1 指针的基本概念 指针是一个变量在内存中包含的是一个地址,指向另一个数据。 Rust 中最常见的指针是引用&#xff0c…

单调栈算法

文章目录 题目概述题目详解739.每日温度1475.商品折扣后的最终价格84.柱状图中最大的矩形 题目概述 单调栈:栈,并且栈是有序的 单调栈的两种写法: 左 -> 右,或者右 -> 左 建议使用左到右的写法 及时去掉无用元素&#xff0c…

vue-有关于TS与路由器

title: vue(TS)路由器 date: 2025-01-28 12:00:00 tags:- 前端 categories:- 前端Vue3-第二部分 这里是代码中出现TS的,后面是路由器 现在先上代码,步步分析。 eg1-props的使用 步步分析代码(先理解,再实践) 框架…

【AI编辑器】字节跳动推出AI IDE——Trae,专为中文开发者深度定制

目录 一、背景 二、核心特性 2.1 AI驱动的代码自动生成 2.2 智能问答与代码补全 2.3 多语言支持 2.4 插件与扩展 三、架构 四、下载使用 4.1 下载与安装 4.2 界面与配置 五、应用实践 5.1 快速生成代码 5.2 智能问答与调试 5.3 团队协作与代码审查 六、与Cursor…

(done) ABI 相关知识补充:内核线程切换、用户线程切换、用户内核切换需要保存哪些寄存器?

由于操作系统和编译器约定了 ABI,如下: 编译器在对 C 语言编译时,会自动 caller 标注的寄存器进行保存恢复。保存的步骤通常发生在进入函数的时候,恢复的步骤通常发生在从函数返回的时候。 内核线程切换需要保存的寄存器&#…

把本地搭建的hexo博客部署到自己的服务器上

配置远程服务器的git 安装git 安装依赖工具包 yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel安装编译工具 yum install -y gcc perl-ExtUtils-MakeMaker package下载git,也可以去官网下载了传到服务器上 wget https://www.ke…

71-《颠茄》

颠茄 颠茄,别名:野山茄、美女草、别拉多娜草,拉丁文名:Atropa belladonna L.是双子叶植物纲、茄科、颠茄属多年生草本,或因栽培为一年生,根粗壮,圆柱形。茎下部单一,带紫色&#xff…

二次封装的方法

二次封装 我们开发中经常需要封装一些第三方组件,那么父组件应该怎么传值,怎么调用封装好的组件原有的属性、插槽、方法,一个个调用虽然可行,但十分麻烦,我们一起来看更简便的方法。 二次封装组件,属性怎…

计算机组成原理(2)王道学习笔记

数据的表示和运算 提问:1.数据如何在计算机中表示? 2.运算器如何实现数据的算术、逻辑运算? 十进制计数法 古印度人发明了阿拉伯数字:0,1,2,3,4,5,6&#…

npm启动前端项目时报错(vue) error:0308010C:digital envelope routines::unsupported

vue 启动项目时,npm run serve 报下面的错: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:67:19) at Object.createHash (node:crypto:133:10) at FSReqCallback.readFileAfterClose [as on…

「 机器人 」仿生扑翼飞行器中的“被动旋转机制”概述

前言 在仿生扑翼飞行器的机翼设计中,模仿昆虫翼的被动旋转机制是一项关键技术。其核心思想在于:机翼旋转角度(攻角)并非完全通过主动伺服来控制,而是利用空气动力和惯性力的作用,自然地实现被动调节。以下对这种设计的背景、原理与优势进行详细说明。 1. 背景:昆虫的被动…

防御保护第一次实验:安全策略配置

一、实验拓扑 二、实验要求 三、需求分析 1.创建两个vlan 2.在ENSP中配置基于时间的ACL实现对于办公区PC访问OA Server的时间限制(工作日早8到晚6)。 3.通过配置基于MAC地址的ACL来实现对于生产区PC访问Web Server的限制(除PC3外不能访问&am…

[权限提升] Windows 提权 — 系统内核溢出漏洞提权

关注这个框架的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客 0x01:系统内核溢出漏洞提权介绍 注意:提权很容易让电脑蓝屏,所以如果是测试的话,提权前最好做好系统备份。 溢出漏洞就像是往杯子里装水 —— 如…

Dest1ny漏洞库:用友 U8 Cloud ReleaseRepMngAction SQL 注入漏洞(CNVD-2024-33023)

大家好,今天是Dest1ny漏洞库的专题!! 会时不时发送新的漏洞资讯!! 大家多多关注,多多点赞!!! 0x01 产品简介 用友U8 Cloud是用友推出的新一代云ERP,主要聚…