ResNet网络学习笔记

本文详细介绍了ResNet的起源、关键创新——残差模块,以及如何解决深度网络训练中的问题。探讨了50/101/152层网络结构,并重点讲解了BatchNormalization的作用。学习者将理解超深网络训练挑战与ResNet的解决方案。
摘要由CSDN通过智能技术生成

一、ResNet概述

背景及亮点介绍

ResNet于2015年在微软实验室被提出

网络中的亮点:
1.超深的网络结构(突破1000层)
2.提出residual 模块(残差模块)
3.使用Batch Normalization加速训练(丢弃dropout)

层数堆叠产生的问题

如下图所示,56层的网络训练和测试中的loss值甚至大于20层的网络
在这里插入图片描述
原论文中将此问题出现的原因归结于两方面:
一是梯度消失或梯度爆炸;二是退化问题。

其实,随着网络层数的加深,梯度消失和梯度爆炸的现象会更加明显;
退化问题解决方案:残差结构

residual结构(残差结构)

主分支与shortcut(捷径)的输出矩阵shape必须相同

计算方法:主干输出与捷径输出直接相加所得结果即为输出

18/34层网络残差结构:
在这里插入图片描述
50/101/152层网络残差结构:
在这里插入图片描述
其中,1*1的卷积层用来降维和升维

完整resnet网络
在这里插入图片描述

接下来以34层残差网络为例,解释上图的结构,首先上图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其中,一个方框代表该conv下对应的一系列残差结构

conv2之后的网络结构与之相类似,但只有conv2层第一个捷径为实线,因为最大池化层后得到的矩阵深度为64,与conv2需要的channel相等,其余的conv3、conv4、conv5层都为虚线,即存在下采样过程;实线对应的残差结构输入矩阵和输出矩阵的shape是一样的,虚线对应的残差结构输入矩阵和输出矩阵不一样,且channel也不同;对于更多层次网络中conv2的第一个为虚线残差层,该层仅调整了特征矩阵的深度,并未改变高和宽

下采样是通过conv3、conv4、conv5所对应的一系列残差结构的第一层来执行的

Batch Normalization

其目的为使一批(Batch)feature map满足均值为0,方差为1的分布规律,通过该方法可以加速网络的收敛并提高准确率;

在对数据进行处理的过程中,经过conv1处理的feature map不一定满足我们所期望的分布规律,Batch Normalization便是对feature map进行处理(如下图)
在这里插入图片描述
对于一个多维的输入,Batch Normalization是对其每一个维度分别进行标准化处理;
具体计算方法如下:
在这里插入图片描述

在这里插入图片描述
实例展示:
其中均值和方差均为向量,其维度对应矩阵深度(channel)
在这里插入图片描述

需注意的问题

1.训练时training参数应设为True,验证时设为False;pytorch中使用model.train()和model.eval()来控制

2.batchsize应设置的尽量大

3.将bn层放在conv与relu之间,且卷积层中不使用bias(偏置)

参考资料:https://blog.csdn.net/qq_37541097/article/details/104434557

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值