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

ResNet学习笔记

《Deep Residual Learning for Image Recongition》:用于图像分类的深度残差学习。

ResNet(残差网络)是在2015年由微软研究院的Kaiming He等人提出的,旨在解决深度神经网络训练过程中的梯度消失、梯度爆炸问题,并允许网络构建得更深,以提高准确性。

现存问题:

1、非常深的神经网络难以训练,会存在梯度爆炸和梯度消失等情况,之前的解决方式是(1)选择合理的参数初始化方式,避免初始值过大或过小;(2)在中间层加入normalization,对参数进行标准化,如BN等。

2、网络较深后性能会变差,训练和测试精度都会变差,但这并不是由于过拟合(训练误差下降,测试误差上升)。

3、层数变多时精度变差:理论上来说,如果浅层网络学习到一个比较好的结果,那么增加深度后效果不会变差,因为增加的层会学习一个恒等映射(Identity Mapping)。但在实际中,优化器(SGD)无法实现这样的效果。

解决方案:残差学习

        显式地增加一个恒等映射分支(Residual Connection)。设当前浅层网络的输出是x,学习目标是H(x),则令新加入的层学习一个残差F(x) = H(x) - x,此时整个网络的输出就可以表示为F(x) + x,而网络的优化目标就 = F(x) = H(x) - x,即层学习输入与输出之间的差异。这意味着,如果一个输入需要通过网络传递到深层,网络可以通过恒等映射轻易实现这一点,通过层的权重接近于零来学习这一恒等映射。

为什么这么做?

1、不会增加任何需要学习的参数与网络复杂度;

2、此时增加网络深度就可以提升精度。

  • 增加残差连接前的梯度:\frac{\partial f(x)}{\partial x}
  • 增加残差连接后的梯度:\frac{\partial (f(x) + x)}{\partial x}=\frac{\partial f(x)}{\partial x}+1

ResNet50的结构:

        ResNet50是一种深度残差网络,它包含了50层深的卷积神经网络。ResNet的核心创新在于它使用了快捷连接或跳过连接,允许网络的激活跳过一个或多个层。在ResNet50中,这些连接帮助激活绕过两层卷积层直接连接到第三层,这是所谓的残差块的基础。

        ResNet50的网络结构大致可以分为五个主要部分,加上输入和输出层。在初始层,它使用一个7x7的卷积核和步幅为2的卷积操作,后面接最大池化层以降低特征图的空间尺寸。接下来的四个部分由3个,4个,6个和3个残差块组成,每个部分在结束时通过步幅为2的卷积减少特征图的大小。每个残差块内有三层卷积,分别使用1x1,3x3和1x1的卷积核,其中1x1卷积层主要用于降低和恢复维度,从而减少模型参数和计算量。

        在网络的末端,使用全局平均池化层代替了传统的全连接层来减少参数和模型的复杂度。最后,它通过一个全连接层和softmax激活函数来输出最终的分类结果。

        ResNet50的设计极大地减少了深层网络训练的难度,因为快捷连接帮助梯度直接流过整个网络,使得即便是很深的网络也可以用标准的随机梯度下降方法有效地训练。

残差块结构:

        每个残差块内的三个卷积层分别有不同的滤波器数量和大小(1x1,3x3,1x1)。1x1的卷积层用于降维和升维,从而减少计算量。

其他防止过拟合的方法:

1、early stop(提前停止):在模型开始过度拟合训练数据时停止训练,找到欠拟合和过拟合之间的“合适点”很重要。

2、Dropout:训练时随机丢弃隐藏层的神经元,使被丢弃的神经元输出为0,不再进行信号传递。

        使用Dropout可以减少神经元之间复杂的共适应性。当隐藏层神经元被随机删除之后,使得全连接网络具有了一定的稀疏性,从而有效地减轻了不同特征的协同效应。也就是说,有些特征可能会依赖于固定关系的隐含节点的共同作用,而通过Dropout的话,就有效地组织了某些特征在其他特征存在下才有效果的情况,增加了神经网络的鲁棒性。

3、正则化:在损失函数中增加正则项以作为惩罚,通过在学习过程中对大的权重进行惩罚,来抑制过拟合。

        神经网络的学习目的是减小损失函数的值。如果为损失函数加上权值的平方范数(L2范数),就可以抑制权重变得过大。用符号表示的话,如果将权重记为W,L2范数的权值衰减就是\frac{1}{2}\lambda W^{2},然后加到损失函数上。\lambda是控制正则化强度的超参数。\lambda设置得越大,对大的权重施加的惩罚就越严重,就会使W变小。一个直观地理解就是令W接近于0,从而消除这些隐藏神经元的影响,使网络变得简洁。两种常用的正则化技术是 L1 正则化和 L2 正则化。

        另一种理解是,当迫使w变小时,输出z也会是一个很小的值,此时模型便会趋于拟合一个线性函数。

4、Batch Normalization

        在网络的训练中,BN使得一个minibatch中的所有样本都被关联在了一起,因此网络不会从某一个训练样本生成确定的结果,即同样一个样本的输出不再仅仅取决于样本的本身,也取决于跟这个样本同属一个batch的其他样本,而每次网络都是随机取 batch,这样就会使得整个网络不会朝这一个方向使劲学习,一定程度上避免了过拟合。 

5、交叉验证

6、增加训练数据:提升模型的泛化性。 

7、特征选择:在构建模型时有许多用于预测结果的特征,而这些特征有些是不必要的,因此可以识别出训练数据中重要的特征,移除其他不重要的特征。此过程有助于简化模型并减少数据中的噪声。

相关文章:

ResNet学习笔记

《Deep Residual Learning for Image Recongition》:用于图像分类的深度残差学习。 ResNet(残差网络)是在2015年由微软研究院的Kaiming He等人提出的,旨在解决深度神经网络训练过程中的梯度消失、梯度爆炸问题,并允许…...

使用chainlit快速构建类似OPEN AI一样的对话网页

快速开始 创建一个文件,例如“chainlit_chat” mkdir chainlit_chat进入 chainlit_chat文件夹下,执行命令创建python 虚拟环境空间(需要提前安装好python sdk。 Chainlit 需要python>3.8。,具体操作,由于文章长度问题就不在叙述&#xf…...

【根据字符出现频率排序】python刷题记录

R2-字符串算法 包哈希表的呀。 注意 class Solution:def frequencySort(self, s: str) -> str:dictdefaultdict(list)#字符串不能直接排序,需要转换为列表["a","b","c"]slist(s)for str in s:if not dict[str]:dict[str]1else:…...

活动报名小程序

#活动报名工具# # 活动报名小程序 ## 项目简介 一款通用的活动报名工具,包含活动展示,微信支付,订单管理,分享评价等功能。 品客聚精彩,有你才精彩!不只有线下活动还可以进行线上裂变活动。 …...

unity基础问题

1.一个列表中的UI有放大效果,用什么实现? 缩放,Layout组件可以勾选使用子级缩放,这样缩放之后也能保持间距 2.UGUI事件传递机制的冒泡机制是怎样的 事件系统从内向外遍历UI层次结构,通知父级UI元素有关该事件的信息。类…...

RedHat Enterprise Linux 7 YUM源(本地/网络源)配置详解

目录 一、挂载 二、建立本地源 三、建立网络源 四、验证可行性 一、挂载 ——将光盘挂载到 /mnt 下 当/mnt中有如图内容时,即挂载成功 若挂载光驱/dev/sr0时报错:mount: no medium found on /dev/sr0 解决措施:查看该设备状态是否全部勾选…...

关于顺序表数组下标的一些关系梳理

...

VS C++ Project(项目)的工作目录设置

如果只是简单创建一个VS CProject或者MFC Project,可能很多时候,只关心将Project放在硬盘的那个位置,与Project目录相关的的其他问题,并不引人注意,我们也不是十分在意。有时我们不得不进行工作目录方面的设置&#xf…...

STM32自定义协议串口接收解析指令程序

1、在使用串口接收自定义协议指令时,需要串口解析收到的是什么指令,举例通信报文为 上位机->单片机 名称 长度 备注 帧头 1Byte 0x5A 0x5A 帧长度 1Byte 数据包的长度0x00-0xFF 数据包 命令字 1Byte 功能标识 数据 可以为空 校验 …...

STM32——GPIO(点亮LEDLED闪烁)

一、什么是GPIO? GPIO(通用输入输出接口): 1.GPIO 功能概述 GPIO 是通用输入/输出(General Purpose I/O)的简称,既能当输入口使用,又能当输出口使用。端口,就是元器件…...

VulnHub靶机入门篇--kioptrix.level 3

1.环境准备 靶机:Kioptrix Level 3(Nat模式) 下载地址:https://download.vulnhub.com/kioptrix/KVM3.rar 攻击机:kali(192.168.26.128)(Nat模式) 2.渗透测试 信息收…...

aiGPT系统源码★重大升级★AI写作/AI绘画/AI音乐/AI视频

亲爱老铁们好,又一段时间未更新内容了,我依然是爱你们的神点妹,今天点妹给大家带来一波新的福利:咱们用的aiGPT经过攻城师们近半年来夜以继日的技术升级,今天终于迎来了新版上线首秀。此次升级内容包含:首先…...

Vue Router高级用法:动态路由与导航守卫

Vue Router是Vue.js官方的路由管理器,它和Vue.js的核心深度集成,让构建单页应用变得轻而易举。 动态路由 动态路由允许你在路由路径中使用变量,这些变量可以从实际的URL中获取,并传递给对应的路由组件。 定义动态路由 在route…...

江科大/江协科技 STM32学习笔记P9-11

文章目录 OLED1、OLED硬件main.c EXTI外部中断1、中断系统2、中断执行流程图3、STM32中断4、中断地址的作用5、EXTI6、EXTI基本结构7、AFIO复用IO口8、EXTI框图或门和与门 9、旋转编码器介绍10、硬件电路 OLED 1、OLED硬件 SCL和SDA是I2C的通信引脚,需要接在单片机…...

【培训通知】成为Power BI数据分析可视化实战第一人,加入3天直播即可

Power BI数据分析可视化实战课程培训是一门旨在提升学员在数据分析与可视化领域能力的专业课程。以下是对该培训课程的详细介绍: 一、课程概述 Power BI 是一种业务分析服务,能够提供深入的见解,帮助用户实现快速、明智的决策。该课程通过实…...

24暑假算法刷题 | Day22 | LeetCode 77. 组合,216. 组合总和 III,17. 电话号码的字母组合

目录 77. 组合题目描述题解 216. 组合总和 III题目描述题解 17. 电话号码的字母组合题目描述题解 77. 组合 点此跳转题目链接 题目描述 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输…...

一篇文章告诉你对讲机为什么不能被手机取代的7个原因

在智能时代,手机几乎无处不在,涵盖了从基本通信到多媒体娱乐的一切功能。然而,即使在这种情况下,对讲机仍然没有被完全取代。这不仅仅是出于怀旧或专业需求,还有许多实质性的原因使得对讲机在特定领域和情况下仍然保持…...

LION论文阅读

一、论文主要出发点 3D目标检测的性能受限于3D卷积的局部感受野。 Transformer在3D检测领域效果很好,但由于算力限制,已有的工作在pillar内,或将voxel分组在组内进行特征交互,阻碍了他们捕捉更远程的依赖关系。 线性RNN算子的计…...

在Android上实现汉字笔顺动画效果——HanZiWriter

序,万般皆是命,半点不由人。 Hanzi Writer 是 javascript 免费开源库,根据汉字书写时按照笔画顺序的特征,可以播放正确笔画顺序的描边动画和练习测试。支持简体字和繁体字。可以让全球用户能够通过手绘模仿的方式来学习和练习书写…...

黑马头条vue2.0项目实战(一)——项目初始化

1. 图标素材(iconfont简介) 制作字体图标的工具有很多,推荐使用:iconfont-阿里巴巴矢量图标库。 注册账户 创建项目 可以根据项目自定义 class 前缀 上传图标到项目 生成链接,复制 css 代码,在项目中使用…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...

DiscuzX3.5发帖json api

参考文章&#xff1a;PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下&#xff0c;适配我自己的需求 有一个站点存在多个采集站&#xff0c;我想通过主站拿标题&#xff0c;采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...

C++_哈希表

本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、基础概念 1. 哈希核心思想&#xff1a; 哈希函数的作用&#xff1a;通过此函数建立一个Key与存储位置之间的映射关系。理想目标&#xff1a;实现…...

【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解

一、前言 在HarmonyOS 5的应用开发模型中&#xff0c;featureAbility是旧版FA模型&#xff08;Feature Ability&#xff09;的用法&#xff0c;Stage模型已采用全新的应用架构&#xff0c;推荐使用组件化的上下文获取方式&#xff0c;而非依赖featureAbility。 FA大概是API7之…...