| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 机器学习笔记:ResNet 及残差连接 -> 正文阅读 |
|
[人工智能]机器学习笔记:ResNet 及残差连接 |
1 为什么会有ResNet?? ? ? ?自从深度神经网络在ImageNet大放异彩之后,后来问世的深度神经网络就朝着网络层数越来越深的方向发展。直觉上我们不难得出结论:增加网络深度后,网络可以进行更加复杂的特征提取,因此更深的模型可以取得更好的结果。 ????????但事实并非如此,人们发现随着网络深度的增加,模型精度并不总是提升,并且这个问题显然不是由过拟合(overfitting)造成的,因为网络加深后不仅测试误差变高了,它的训练误差竟然也变高了。【注:过拟合应该是训练误差很小,但是测试误差很大;这里训练误差都很大,说明不是过拟合的问题】 ????????这可能是因为更深的网络会伴随梯度消失/爆炸问题,从而阻碍网络的收敛。这种加深网络深度但网络性能却下降的现象被称为退化问题(degradation problem)。 ? ? ? ? 从上图我们可以看出,当传统神经网络的层数从20增加为56时,网络的训练误差和测试误差均出现了明显的增长,也就是说,网络的性能随着深度的增加出现了明显的退化。 ????????ResNet就是为了解决这种退化问题而诞生的。 2 ResNet原理????????随着网络层数的增加,梯度爆炸和梯度消失问题严重制约了神经网络的性能,研究人员通过提出包括Batch normalization在内的方法,已经在一定程度上缓解了这个问题,但依然不足以满足需求。 ? ? ? ? ResNet提出了使用恒等映射(Identity mapping)来解决这个问题。 ????????问题解决的标志是:增加网络层数,但训练误差不增加。
?3 ResNet(各变体)网络结构????????ResNet有很多变体,比较著名的有五种主要形式:Res18,Res34,Res50,Res101,Res152。 ???????? ? ? ? ? 如上图所示,ResNet及其变体主要包括三个主要部分:输入部分(input)+中间卷积(stage1~stage4)+输出部分(output) 3.1 网络整体结构? ? ? ? 以ResNet18为例:?
?3.2 网络输入部分
在pytorch 笔记:torch.nn.Conv2d_UQI-LIUWJ的博客-CSDN博客、pytorch笔记:torch.nn.MaxPool2d_UQI-LIUWJ的博客-CSDN博客中,我们说到,经过Conv2d和MaxPool2d之后的channel数为: ????????在ResNet中,输入部分是一个224x224的图像,经过输入部分之后,变成了56x56大小的特征图,极大减少了存储所需大小。 ? 3.3 中间卷积部分????????中间卷积部分主要是下图中的蓝框部分,通过3*3卷积的堆叠来实现信息的提取。红框中的[2, 2, 2, 2]和[3, 4, 6, 3]等则代表了bolck的重复堆叠次数。? ? ? ? ? ?红框前面的是卷积核的大小,以及输出的channel数 ????????刚刚我们调用的resnet18( )函数中有一句
????????这里的[2, 2, 2, 2]与图中红框是一致的,如果你将这行代码改为 ResNet(BasicBlock, [3, 4, 6, 3], **kwargs), 那你就会得到一个res34网络。 3.4? 残差块? ? ? ??下面我们来具体看一下一个残差块是怎么实现的。 ????????如下图所示的basic-block,输入数据分成两条路,一条路经过两个3*3卷积,另一条路直接短接,二者相加经过relu输出,十分简单。
? ?3.5 输出部分?????????网络输出部分很简单,通过全局自适应平滑池化,把所有的特征图拉成1*1。 ????????对于res18来说,就是1x512x7x7 的输入数据拉成 1x512x1x1,然后接全连接层输出,输出节点个数与预测类别个数一致。
4 bottleneck 结构?
?参考文献:ResNet及其变种的结构梳理、有效性分析与代码解读 - 知乎 (zhihu.com) ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/1 10:36:07- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |