【卷积神经网络】ResNets 残差网络

通常来说,增加卷积神经网络的层数有利于提高模型的准确率,但是深层的神经网络也变得难以训练的,因为存在梯度消失与梯度爆炸问题。Microsoft 亚洲研究院的 Kaiming He 等人提出了一个残差学习框架,以简化对 CNN 网络的训练。通过将层重新表述为参考层输入的学习残差函数,深层神经网络变得更容易优化,并且可以从显著增加网络的准确性。本文主要介绍 ResNet 残差网络的基本结构(Residual block)及其工作原理。

目录

1 深层网络的瓶颈

2 残差块与残差网络


1 深层网络的瓶颈

        在 ImageNet 挑战赛中,排名靠前的团队都使用深度较深的模型,一般是深度在 16 到 30 层之间的神经网络。通过叠加多个网络层,神经网络能够更容易地提取出丰富的分类特征,从而提高分类准确性。

        但随之而来的问题是,简单地增加网络层数,就能获得学习效果更好的模型吗?前面提到的梯度消失与梯度爆炸问题是一个阻碍。实际上,神经网络的学习误差,一开始会随着网络层数的增加而减少,但是当层数增大到一定数量时,学习误差反而会增加,这种问题被称为退化(Degradation problem)。

        下图展现了 20 层模型与 56 层模型的训练误差,和测试误差随迭代次数的变化情况,图片来源《Deep Residual Learning for Image Recognition》论文。

2 残差块与残差网络

        在《Deep Residual Learning for Image Recognition》论文中,Kaiming He 等人通过引入深度残差学习框架来解决退化问题。

        残差网络使用了被称为残差块的基本结构,如下图所示。

        在残差块中,输入 x 除了沿着主分支(即经过两层线性加权与非线性激活)传播之外,还沿着一条捷径进行传播,作为第二层非线性激活的输入,这条捷径被称为 “Shortcur connection”。

        假设神经网络需要学习的函数为 H(x) = x,对于不存在捷径的网络,神经网络需要学习 F(x) = H(x) = x 这个函数,当神经网络的层数增加时,优化算法训练模型的复杂度会增加。

        而引入 Shortcut connection 之后,模型学习的函数变为 F(x) = H(x) - x = 0,这只需要让 weight layer 的权重为 0 即可实现,这说明残差网络更擅长学习 H(x) = x 恒等映射。当神经网络的层数增加时,Shortcut connection 的引入不会增额外的训练参数,也不会增加训练的复杂度,可以有效解决前面提到的退化问题。

        残差网络(Residual Networks)使用了多个堆叠的残差块,在《Deep Residual Learning for Image Recognition》论文中,Kaiming He 等人对比了使用与未使用残差结构网络的表现,网络结构如下图所示。

                当残差块的输入与输出具有相同维度时,x 可以直接加到 F(x) 之上;当输出维度增加时,可以使用 0 值填充多出来的维度,也可以使用 1x1 卷积(上图中用虚线连接表示)。

        在 ImageNet 训练集上,ResNet-34 实现了比 ResNet-18 更低的误差。

【参考文献】

[1] Kaiming He, Xiangyu Zhang, Xiangyu Zhang, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot+Vue的餐饮管理系统设计与实现

前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻…

Linux 挂载

挂载需要挂载源和挂载点 虚拟机本身就有的挂源 添加硬件 重启虚拟机 操作程序 sudo fdisk -l //以管理员权限查看电脑硬盘使用情况sudo mkfs.ext4 /dev/sdb //以管理员身份格式化硬盘sudo mkdir guazai //创建挂载文件夹 sudo mount /dev/sdb/guazai //将挂载源接上挂载点 s…

嵌入式C语言知识复习和提高

文章目录 前言基础知识main函数防BUG注释(重要)关键字标识符命名(驼峰命名)常量类型变量printf1.输出不同类型数据2.输出不同宽度数据3.不同类型数据长度归类 scanf函数运算符sizeof(运算符,优先级2&#x…

欧拉操作系统在线安装mysql8数据库并用navicat premium远程连接

网上太多安装教程,但是没有一个教程能够一站式解决安装问题,而我不一样,我写的每一个博客,都是我自己试验过很多次,能够确保一站式解决,才会发上去,希望能够帮助到大家 第一步:升级…

恒合仓库 - 仓库管理系统搭建

仓库管理系统搭建 文章目录 仓库管理系统搭建一、项目介绍1.1 项目描述1.2 技术选型1.3 模块划分 二、搭建前端环境三、搭建后端环境3.1 创建springboot项目 - 划分包层次3.2 导入依赖3.3 启动类配置3.4.配置文件配置 一、项目介绍 1.1 项目描述 项目搭球为满足日益扩大的仓库…

Matlab图像处理-区域描述

一旦一幅图像的目标区域被确定,我们往往用一套描述子来表示其特性。选择区域描述子的动机不单纯为了减少在区域中原始数据的数量,而且也应有利于区别带有不同特性的区域。因此,当目标区域有大小、旋转、平移等方面的变化时,针对这…

力扣 -- 394. 字符串解码

解题方法&#xff1a; 参考代码&#xff1a; class Solution{ public:string decodeString(string s){stack<string> sst;stack<int> dst;//防止字符串栈为空的时候再追加字符串到栈顶元素sst.push("");int n s.size();int i 0;while(i<n)//最好不…

高级运维学习(九)块存储、文件系统存储和对象存储的实现

块存储基础 块设备存取数据时&#xff0c;可以一次存取很多。字符设备只能是字符流 [rootceph1 ~]# ll /dev/sda brw-rw---- 1 root disk 8, 0 Dec 12 13:15 /dev/sda # b表示block&#xff0c;块设备[rootceph1 ~]# ll /dev/tty crw-rw-rw- 1 root tty 5, 0 Dec 12 13:31 /d…

工业机器人仿真参考

最近有一些朋友看到我做的关于Unity3d仿真机器人的项目&#xff0c;本次我在平台做以分享&#xff0c;希望的朋友或者有需要在此基础做开发的可以参考下。 开发工具&#xff1a; 下位机&#xff1a;Unity3D 上位机&#xff1a;Visual Studio 机械臂模型&#xff1a;TH6-QKM…

高云FPGA系列教程(7):ARM GPIO外部中断

文章目录 [toc]GPIO中断简介FPGA配置常用函数MCU程序设计工程下载 本文是高云FPGA系列教程的第7篇文章。 本篇文章介绍片上ARM Cortex-M3硬核处理器GPIO外部的使用&#xff0c;演示按键中断方式来控制LED亮灭&#xff0c;基于TangNano 4K开发板。 参考文档&#xff1a;Gowin_E…

L1-027 出租

一、题目再现 下面是新浪微博上曾经很火的一张图&#xff1a; 一时间网上一片求救声&#xff0c;急问这个怎么破。其实这段代码很简单&#xff0c;index数组就是arr数组的下标&#xff0c;index[0]2 对应 arr[2]1&#xff0c;index[1]0 对应 arr[0]8&#xff0c;index[2]3 对应…

消息队列(五):虚拟主机设计

虚拟主机存在的意义 一个虚拟主机类似于 MySQL 的 database&#xff0c;把交换机&#xff0c;队列&#xff0c;绑定&#xff0c;消息....进⾏逻辑上的隔离&#xff0c;⼀个服务器可以有多 个虚拟主机&#xff0c;此处我们项⽬就设计了⼀个虚拟主机&#xff08;VirtualHost&…

GO-日志分析

GO-日志分析 log包简介 Go提供了logger包来做日志记录。使用方式如下所示 package mainimport ("log""os" )func main() {// 创建一个新的日志文件.默认是stdOutfile, err : os.Create("app.log")if err ! nil {log.Fatal(err)}defer file.Cl…

源码编译Qt 5.15.9+msvc2019

官方文档里给出了详细步骤&#xff1a; Building Qt Sources Building Qt 5 from Git (Wiki) 注&#xff1a;本文基于windows11vs2019x64qt5.15.9&#xff0c;不编译Qt WebEngine 归纳总结如下&#xff1a; 准备阶段 Qt for Windows - Requirements 安装python&#xff0c;…

[npm]package.json文件

[npm]package.json文件 生成 package.jsonpackage.json 必须属性nameversion 描述信息descriptionkeywordsauthorcontributorshomepagerepositorybugs 依赖配置dependenciesdevDependenciespeerDependenciesoptionalDependenciesbundledDependenciesengines 脚本配置scriptscon…

无涯教程-JavaScript - PI函数

描述 PI函数返回数字3.14159265358979,数学常数pi,精确到15位数字。 语法 PI ()争论 PI函数语法没有参数。 适用性 Excel 2007,Excel 2010,Excel 2013,Excel 2016 Example JavaScript 中的 PI函数 - 无涯教程网无涯教程网提供描述PI函数返回数字3.14159265358979,数学常…

半导体划片机工艺应用

半导体划片工艺是半导体制造过程中的重要步骤之一&#xff0c;主要用于将大尺寸的晶圆切割成小片&#xff0c;以便进行后续的制造和封装过程。以下是一些半导体划片工艺的应用&#xff1a; 晶圆划片&#xff1a;在半导体制造过程中&#xff0c;需要将大尺寸的晶圆切割成小片&am…

虚拟机(VMM)

一、虚拟机概念 虚拟机又名虚拟机管理程序、虚拟机监控程序、VMM 使用虚拟化技术&#xff0c;将一台物理机器虚拟化为多台虚拟机器&#xff0c;每台虚拟机器都可以独立一个操作系统。 传统的计算机&#xff0c;一台物理机器只能运行一个操作系统。 二、虚拟机的分类 第一类VMM&…

【Linux 服务器运维】定时任务 crontab 详解 | 文末送书

文章目录 前言一、crontab 介绍1.1 什么是 crontab1.2 crontab 命令工作流程1.3 Linux 定时任务分类 二、crontab 用法详解2.1 crond 服务安装2.2 crontab 文件内容分析2.3 crontab 命令用法2.3.1 查看定时任务列表2.3.2 编辑/创建定时任务2.3.3 删除定时任务2.3.4 其他 cronta…

微服务07-认识MQ+RabbitMQ入门

1.前言 了解同步调用和异步调用 1.1.同步调用 比如这里的支付服务&#xff0c;需要等待订单服务、短信服务…执行完毕才能执行&#xff0c;这样支付整个流程完毕需要500ms 然后如果订单、仓储等其中一个服务挂掉了&#xff0c;那么支付服务请求请求不了&#xff0c;挂掉的服…