残差网络ResNet学习笔记

本文介绍了残差网络(ResNet)的基本结构和工作原理,包括残差块的设计及其对解决深度网络中梯度消失问题的作用。ResNet通过跳跃连接保持信息流动,允许构建更深的网络。文章还讨论了ResNet的结构改进,如1x1卷积用于降维和升维,并解释了为何不使用池化层。最后,展示了ResNet的代码实现和其在解决深层网络退化问题上的重要意义。
摘要由CSDN通过智能技术生成

引言

随着深度学习的发展,简单的浅层网络卷积结构已经无法满足需求。而一味的加深网络结构,又会使网络很难收敛。研究者们都在网络结构上进行创新。而一种新型结构Resnet在ImageNet比赛上拔得头筹,拿下识别冠军,引起了不小的轰动

基础结构 残差块

残差网络是由一个个残差块来进行组成的
在这里插入图片描述
这是一种跳跃连接的方式
第一条线路经过常规的卷积,激活,批量归一化后,在输出的时候与输入进行相加。

最后整个输出再进行一次Relu激活

因为输入x有一条线路是跳过其中的卷积部分,所以能直接地到达网络内部。避免了传统网络规模加大,导致梯度消失或爆炸情况。

结构

整体结构上 论文作者是先用7x7窗口的卷积层对图像进行捕获,经过批量归一化激活后,再输入到一个个残差块当中

第二种残差块是借助1x1窗口的卷积核对输入进行降维度,最后再用一个1x1窗口的卷积核将维度还原回来。其实1x1窗口的卷积核可以近似看成一种全连接层。而去除了池化层之后,也不至于丢失太多细节和特征

在这里插入图片描述
先是将输入进来的256维经过1x1的卷积核降维到64,再进行3x3窗口卷积,最后再还原到256维度与输入相加

另外一种降低维度的残差块结构如下
在这里插入图片描述
他额外通过1x1卷积核的窗口,但是步幅设置为2,所以宽度高度会降低一半。
此时另外一条线路的卷积,在一开始使用3x3的窗口,步幅也设置为2,这样才能达到两条线路的维度相同,从而最后能成功相加

这里要提及的是,为了避免池化层中对细节特征的损失,通常Resnet是不设置池化层的,因为步幅为2的1x1卷积核已经能够对维度减半

另外,在Restnet后续版本,作者将残差块原先的
卷积 —> 批量归一化 —> 激活结构改成了 批量归一化 —> 激活 —> 卷积的结构

代码 实现

首先我们来实现两种残差块,以及预卷积模块

from keras import backend as K
from keras.models import *
from keras.layers import 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值