ResNet网络结构
注:深度好像就是channel w*h*c
根据b站up霹雳吧啦的讲解做的笔记 视频地址6.1 ResNet网络结构,BN以及迁移学习详解_哔哩哔哩_bilibiliR
6.2 使用pytorch搭建ResNet并基于迁移学习训练_哔哩哔哩_bilibili
ResNet网络解决梯度消失、爆炸,以及退化(我理解成随着层数的增加精度反而下降)问题
网络中亮点:1超深的网络结构
2提出residuaal模块
3使用batch normalization加速训练(丢弃drop out)
residual结构:
左边是针对网络层数较少的网络(18 34)使用的残差结构,右边对网络层数较多(50 101 152)的网络使用残差结构
主分支与侧分支输出的特征矩阵相加,他们的shape需要一样
3*3卷积核,深度为256~
从下面的式子可以看出,右边的网络所需计算量更小
ResNet网络结构分别有 18、34、50、101、152层
拿34层网络结构进行讲解
conv1 7*7卷积核
conv2_x 一系列残差结构中, 最大池化下采样,然后使用三层残差层
conv3_x 四个残差
conv4_x 六个残差结构
conv5_x 三个残差结构
平均池化下采样、全连接、softmax
实线与虚线的结构有何不同?
实线残差结构,输入特征矩阵与输出特征矩阵shape一样,对于虚线残差结构,对应conv3一系列结构的第一层,他的输入特征矩阵shape是【56,56,64】,输出特征矩阵shape是【28,28,128】
对比左右两个残差网络,发现右边第一个3*3卷积的stride发生了变化,经过第一个3*3卷积之后,输入特征向量变成了28*28(可以算出padding=1),通过128个卷积核改变了特征矩阵的深度
捷径 采用1*1卷积核,stride=2卷积之后特征矩阵变成28*28(算出来padding=0)
总结 左边实线部分的残差结构 输入输出特征矩阵shape一样,虚线部分的残差结构 输入输出shape不一样,所以在conv_3\conv_4\conv_5中都是 第一层都是接了虚线的残差结构来使输入shape变成自己需要的shape
原论文中提供了3种残差结构,作者认为B结构最好
注意:
对于18层和34层这两个浅层神经网络,他们经过最大池化下采样之后所得到的特征矩阵就是56*56*64,而conv2需要的残差结构刚好就是56*56*65,浅层网络不需要在第一层使用虚线网络结构,对于深层50 101 152 层来说,他们经过最大池化下采样的shape是56*56*64,而实线残差网络结构需要的输入shape是56*56*256,所以他们在conv2中的第一层也是虚线结构来调整深度
BN层:
在15年 谷歌提出,目的是使我们的一批(batch)feature map满足均值为0,方差为1的分布规律,它可以加速网络的收敛并提升准确率)
对于一个拥有d维的输入x,我我们对他的每一个维度进行标准化处理,d就是输入图像的channels,对于RGB图像来说d=3,其中就代表我们R通道对应的特征矩阵。标准化处理也就是分别对R\G\B通道进行处理。
计算公式:
1计算一批数据 同一通道所有数据的 对应的均值、方差 (计算得出)
2原参数减去均值 除以方差
3 是一个很小的值,防止分母=0
4做进一步调整,调整数据方差大小,初始值为1,调整均值,初始值为0,如果不用他们调整就得到均值为0,方差为1的数据分布,, 是通过反向传播学习得到的
举例子:
我们所求的均值和方差是一个向量,维度和channel对应~
使用BN需要注意的问题:
迁移学习:
优势:
1快速训练出理想的结果
2数据集较小时也能训练出理想的结果
注意:使用别人预训练模型参数时,要注意别人的预处理方式
方式:学习浅层网络参数,将网络学习的底层通用特征迁移到新的网络,缩短训练时间
常见迁移学习方式:
1要注意最后一个fc网络,最后一层fc无法载入权重参数
第二三种可以节约时间,节省硬件
使用PyTorch搭建ResNet并基于迁移学习训练
ResNet网络结构相关推荐
- ResNet网络结构详解,网络搭建,迁移学习
前言: 参考内容来自up:6.1 ResNet网络结构,BN以及迁移学习详解_哔哩哔哩_bilibili up的代码和ppt:https://github.com/WZMIAOMIAO/deep-le ...
- pytorch图像分类篇:6. ResNet网络结构详解与迁移学习简介
前言 最近在b站发现了一个非常好的 计算机视觉 + pytorch 的教程,相见恨晚,能让初学者少走很多弯路. 因此决定按着up给的教程路线:图像分类→目标检测→-一步步学习用pytorch实现深度学 ...
- ResNet网络结构,BN以及迁移学习详解
看b站up主霹雳吧啦Wz视频,以及一些文章参考,所做笔计 链接: 6.1 ResNet网络结构,BN以及迁移学习详解_哔哩哔哩_bilibili 深度学习之残差神经网络(ResNet) - 知乎 (z ...
- cnn卷积过程,通道数,《6.1 ResNet网络结构,BN以及迁移学习详解》
6.1 ResNet网络结构,BN以及迁移学习详解_哔哩哔哩_bilibili CNN科普讲解:李宏毅讲解卷积神经网络(带字幕)_哔哩哔哩_bilibili 1.图像中的RGBpython rgb 图 ...
- ResNet网络结构的搭建(一)
目录 1.基本结构:BasicBlock和BottleNeck 2.构建ResNet网络 3.完整代码 代码部分参考b站视频 1.基本结构:BasicBlock和BottleNeck ResNet中最 ...
- resnet网络结构_深度学习之16——残差网络(ResNet)
残差网络在设计之初,主要是服务于卷积神经网络(CNN),在计算机视觉领域应用较多,但是随着CNN结构的发展,在很多文本处理,文本分类里面(n-gram),也同样展现出来很好的效果. 首先先明确一下几个 ...
- resnet网络结构_ResNet网络详细解析(超详细哦)
1.RestNet网络 1.1.RestNet网络结构 ResNet在2015年被提出,在ImageNet比赛classification任务上获得第一名,因为它"简单与实用"并存 ...
- resnet50网络结构_学习笔记(一):分析resnet源码理解resnet网络结构
最近在跑实验的过程中一直在使用resnet50和resnet34,为了弄清楚网络的结构和原理的实现,打开resnet的源码进行了学习. 残差网络学习的原理 针对神经网络过深而导致的学习准确率饱和甚至是 ...
- 论文笔记:再看ResNet——ResNet典型网络结构
前言 第一次看ResNet论文的时候,由于刚接触深度学习不久,对ResNet的理解仅仅停留在论文中阐述的一些基本思想.加上当时实验室的硬件条件很有限,用的模型基本上以AlexNet和VGG为主,并没有 ...
- bottleneck resnet网络_关于ResNet网络的一点理解(网络结构、building block 及 “bottleneck” building block)...
[时间]2018.10.05 [题目]关于ResNet网络的一点理解(网络结构.building block 及 "bottleneck" building block) 概述 本 ...
最新文章
- 中国世界工厂地位为什么不会动摇
- python os.path模块学习(转)
- java 百亿计算器_设计一个一百亿的计算器
- Python 代码实现模糊查询
- QT中Qpixmap与QImage的转化
- C语言字符串中删除重复的字符的算法(附完整源码)
- Elasticsearch大文件搜索
- oracle 导出空表问题
- flink离线mysql_Flink 流模式跑离线任务
- python1加到100总和_从1加到一百总和是多少?有什么公式吗?
- AWT_addKeyListener键盘监听事件(Java)
- 解决Zabbix网页端Get value error: cannot connect to [[192.168.238.139]:10050]: [113] No route to host问题...
- CentOS和Ubuntu哪个好?
- 詹姆斯高斯林_詹姆斯·高斯林(James Gosling)关于Java的立场:我几乎不在乎
- 使用pthread后,界面假死现象问题
- Android浏览器翻译功能调研
- 龟背驼腰下一句更精彩
- 满足哪些条件的商品有资格参与亚马逊秒杀卖家们知多少?
- java内嵌_Java内嵌类
- Object类中的hashCode方法