没有合适的资源?快使用搜索试试~ 我知道了~
首页ResNet网络Pytorch实战.pdf
ResNet网络Pytorch实战.pdf
需积分: 50 14 下载量 150 浏览量
更新于2023-03-16
评论 1
收藏 1.22MB PDF 举报
总结了ResNet的相关原理、网络结构,pytorch代码实现,并对自定义花类数据集进行训练和测试。
资源详情
资源评论
资源推荐
ResNet
[1]
引言:
ResNet 网络是在 2015 年 由微软实验室(何凯明)提出,斩获当年 ImageNet 竞赛中分类
任务第一名,目标检测第一名。获得 COCO 数据集中目标检测第一名,图像分割第一名。
该网络的亮点:
1.超深的网络结构,最高超过 1000 层;
2.提出 Residual 结构(残差结构);
3.使用 Batch Normalization 加速训练(丢弃 dropout)。
下面先来看看 ResNet-34 网络结构图:
图 1 ResNet-18 网络结构图
ResNet-34 网络结构简单:
输入-卷积层-池化层-若干残差结构(卷积层加残差)-池化层-全连接层-输出
(1) 为什么说 ResNet 是真正的深度网络?
在 ResNet 网络提出之前,传统的卷积神经网络都是通过将一系列卷积层与池化层进行
堆叠得到的。一般我们会觉得网络越深,特征信息越丰富,模型效果应该越好。但是实验证
明,单纯的堆叠层数不仅训练参数变多了(时间成本增加),而且训练性能可能会更低。这
是因为当网络堆叠到一定深度时,会出现三个问题:梯度消失、梯度爆炸以及退化问题。
ResNet 的提出解决了以上个问题(4 个),让 CNN 真正步入深度模型。
参数过多:随着层数增加,自然需要训练的参数就会更多,导致训练时间成本增加;
梯度消失:若每一层的误差梯度小于 1,反向传播时,网络越深,每一层的梯度累积梯
度就会越趋近于 0;
梯度爆炸:若每一层的误差梯度大于 1,反向传播时,网路越深,每一层的梯度累积相
乘就会越来越大;
退化问题(degradation problem):在解决了梯度消失、爆炸问题后,可能仍然存在深层
网络的效果可能比浅层网络差的现象;
总结就是,当网络堆叠到一定深度时,反而会出现深层网络比浅层网络效果差的情况。
如下图所示,20 层网络 反而比 56 层网络 的误差更小:
图 2 20 层以及 50 层 CNN 简单堆叠的训练、测试误差对比图
对于参数过多的问题,ResNet 提出利用堆叠 1X1 卷积减少了大量的模型参数。
对于梯度消失或梯度爆炸问题,ResNet 论文提出通过数据的预处理以及在网络中使用
BN(Batch Normalization)层来解决。
对于退化问题,ResNet 论文提出了 residual 结构(残差结构)来减轻退化问题,下图
3 是使用 residual 结构的卷积网络,可以看到随着网络的不断加深,效果并没有变差,而是
变的更好了。(虚线是 train error,实线是 test error)。
图 3 ResNet 不同层数训练、测试误差对比图
(2) 残差结构:
为了解决深层网络中的退化问题,可以人为地让神经网络某些层跳过下一层神经元的连
接,隔层相连,弱化每层之间的强联系。这种神经网络被称为 残差网络 (ResNets)。
残差网络由许多隔层相连的神经元子模块组成,我们称之为残差块 Residual block。
随着网络层数增加参数个数不断增加,为了减少参数量,引入 1X1 卷积核,原文定义的
ResNet 按网络结构层数一共分为 5 种,并且定义了两种不同的残差块。其中 18/34 层对应
的残差块如下图 4 左,称为 BasicBlock 块,50/101/152 层对应的残差块如下图 4 右,称为
Bottleneck 块,对于深层的 Bottleneck,1×1 的卷积核起到降维和升维(特征矩阵深度)
的作用,同时可以大大减少网络参数。残差块结构图如下图 4:
图 4 残差块结构图,左 BasicBloc,右 Bottleneck
上图中右边的曲线称为 short cut 或者 skip connection(也称 捷径分支),其前向传播
的计算步骤为(以上图左边的 BasicBlock 块为例):
输入-3x3 卷积-relu-3x3 卷积-上一层卷积的输出参数直接加上输入的参数-relu-输出
由多个残差块组成的神经网络就是残差网络结构。ResNet 中一共设置了四个残差网络
结构(18/34/50/101/152 都是四个,只是每个结构中残差块数目不同,如图 5),每个残差
结构中有若干残差块。
实验表明,这种模型结构对于训练非常深的神经网络,效果很好。
残差结构中的虚线和实线:
观察图 1 的 ResNet18 层网络,可以发现有些残差块的 short cut 是实线的,而有些则
是虚线的。这些虚线的 short cut 上通过 1×1 的卷积核进行了维度处理,1×1 的卷积核起到
降维和升维(特征矩阵深度)的作用,同时可以大大减少网络参数。
BasicBloc 块:
Bottleneck 块:
剩余13页未读,继续阅读
嘎嘎声现在
- 粉丝: 7
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0