【模型解读】“全连接”的卷积网络,有什么好?
【模型解读】“全连接”的卷积网络,有什么好?
这是深度学习模型解读第8篇,本篇我们简单介绍Densenet。
作者&编辑 | 言有三
1 从skip connect到dense connect
我们知道,曾经深度网络训练不好收敛,Resnet的出现打破了这一僵局,背后的思想仅仅只是拉了一个skip connect,也就是将输入和输出相连相加,下面是一个resnet18的展示。这个输入输出,可以是刚好相邻的两个卷积block,也可以是跳过若干层的两个。
假如,我们再进一步,将这个思想发挥到极致,会怎样?把所有层都与其他所有层相连,也就是说N层的网络,会有(N*N-1)/2个连接,如下图所示:
这就是densenet【1】,CVPR 2017最佳论文,可以看作是一个发挥到极致的resnet。
2 为什么会设计densenet?
大家如果对resnet理解不够深的话,可以回过头去读我们的上一期对resnet的解读。残差连接的必要性和有效性,在那篇文章中做了很详细的解读。
【模型解读】resnet中的残差连接,你确定真的看懂了?
神经网络越深,网络的能力越强,就越有可能过度学习数据集,导致过拟合。大家应该还记得,作为第一个深层网络Alexnet网络,它提出了重要的策略dropout,对于提高模型的泛化能力非常有效。alexnet网络至今仍然可以用于很多的任务,这足以说明其鲁棒性。后来BN和数据增强等正则化策略替代dropout也在一定程度上缓解了过拟合的问题。文【2】是densenet作者们早期的研究,它们通过训练时随机丢掉一些网络层,提高了ResNet的泛化性能。
从这里可以看出来一个重要特性,这也是神经网络中大家比较关心的问题,网络的冗余性绝对是存在的,而且不小,通过探索dropout值的比例对性能的影响可以去估算这个冗余。
既然丢掉某些层间连接或者整个层不影响性能,就说明这一层学习到的非线性转变很小,既然转变很小,那么每一层学习几百个通道,还有必要吗?这几百个通道,正是万恶的计算量所在。
考虑到这一点,densenet就同时做了两件事情,一是将网络中的每一层都直接与其前面层相连,提高特征的利用率;二是把网络的每一层设计得很窄,也就是卷积的输出通道数通常很小,只有几十,该层学习非常少的特征图并与输入concat使用。
这实现了资源的最大化利用和计算量的压缩。ImageNet分类数据集上达到同样的准确率,DenseNet 所需的参数量不到ResNet的一半,所需的计算量也只有ResNet的一半左右。
思想就是这么简单,当然,我们在使用的时候,不会真的这么夸张去将所有层都连接起来,更多的是将网络的后面一些层做dense连接。毕竟网络设计的通用思想是网络越深宽度更宽,这里做dense连接对于减小计算量更有意义。
3 简单思考
人类对深度学习模型只有三个要求,运行速度快,网络模型小,性能好。
提升网络性能,最朴素的方法就是加深加宽网络,但这与前面两者是冲突的。所以,工程师们都在想方设法压榨每一个通道的性能,但又要避免网络发生过拟合。
既要没用的网络层减少,又要有用的网络层不能太灵敏,那就只有一条路可以走了。充分压榨已有的网络层的性能,让他们充分交流。
网络发展到现在,早已经不是Lenet,Alexnet,Vggnet这样简单的网络加深的路线,网络各层之间信息的融合,在图像分割(FCN),目标检测(FPN)等任务中都至关重要,看看下面的网络图就知道。
FCN结构
FPN结构
不同层之间的连接,融合不同抽象层级的信息,融合不同尺度的信息,densenet将这个发挥到了极致,就这么简单。
同时,在我的知乎专栏也会开始同步更新这个模块,欢迎来交流
https://zhuanlan.zhihu.com/c_151876233
注:部分图片来自网络
—END—
转载请留言,侵权必究
本系列的完整目录:
【模型解读】从LeNet到VGG,看卷积+池化串联的网络结构
【模型解读】network in network中的1*1卷积,你懂了吗
【模型解读】GoogLeNet中的inception结构,你看懂了吗
【模型解读】说说移动端基准模型MobileNets
【模型解读】pooling去哪儿了?
【模型解读】resnet中的残差连接,你确定真的看懂了?
【模型解读】“不正经”的卷积神经网络
【模型解读】“全连接”的卷积网络,有什么好?
【模型解读】从“局部连接”回到“全连接”的神经网络
【模型解读】深度学习网络只能有一个输入吗
【模型解读】从2D卷积到3D卷积,都有什么不一样
【模型解读】浅析RNN到LSTM
感谢各位看官的耐心阅读,不足之处希望多多指教。后续内容将会不定期奉上,欢迎大家关注有三公众号 有三AI!
【模型解读】“全连接”的卷积网络,有什么好?相关推荐
- Densely connected convolutional networks(密集连接的卷积网络)
本文是 CVPR 2017 论文 Densely connected convolutional networks. 的翻译学习,因为作者本人水平有限,如有不准确的地方还望读者不吝赐教. 摘要 最近的 ...
- 全连接、卷积、循环神经网络介绍
神经网络简介 训练神经网络主要围绕下面四部分: 层,多个层组合成网络(或模型) 输入数据和相应目标 损失函数,即用于学习的反馈信号 优化器,决定学习过程如何进行 层.损失函数.优化器之间的关系: 层: ...
- 通俗讲解多层全连接前向网络的基本结构
通俗讲解多层全连接前向网络的基本结构 1 模拟神经元 2 单层神经网络的分类器 3 激活函数 3.1 Sigmoid 3.2 Tanh 3.3 ReLU 4.4 Leaky ReLU 3.5 Maxo ...
- 【数据挖掘】卷积神经网络 ( 池化 | 丢弃 | 批量规范化 | 卷积神经网络完整流程示例 | 卷积 | 池化 | 全连接 | 输出 | 卷积神经网络总结 )
文章目录 I . 池化 II . 丢弃操作 III . 批量规范化 IV . 卷积神经网络 完整流程示例 ( 1 ) : 原始输入图 V . 卷积神经网络 完整流程示例 ( 2 ) : 卷积层 C1C ...
- Pytorch Note32 稠密连接的卷积网络 DenseNet
Pytorch Note32 稠密连接的卷积网络 DenseNet 文章目录 Pytorch Note32 稠密连接的卷积网络 DenseNet DenseNet Dense Block DenseN ...
- Pytorch 实现全连接神经网络/卷积神经网络训练MNIST数据集,并将训练好的模型在制作自己的手写图片数据集上测试
使用教程 代码下载地址:点我下载 模型在训练过程中会自动显示训练进度,如果您的pytorch是CPU版本的,代码会自动选择CPU训练,如果有cuda,则会选择GPU训练. 项目目录说明: CNN文件夹 ...
- 「模型解读」从2D卷积到3D卷积,都有什么不一样
https://www.toutiao.com/a6711317983035130371/ 接着模型解读系列,在中国科幻作家刘慈欣的科幻小说<三体Ⅲ·死神永生>中,首次提出了降维打击这个概 ...
- 【模型解读】从2D卷积到3D卷积,都有什么不一样
接着模型解读系列,在中国科幻作家刘慈欣的科幻小说<三体Ⅲ·死神永生>中,首次提出了降维打击这个概念,这是本质上区别于同一维度的攻击,破坏性也更大. 而现在我们要说的是从二维卷积升级到三维卷 ...
- pytorch实现IMDB数据集情感分类(全连接层的网络、LSTM)
目录 一.任务描述 二.思路分析 三.准备数据集 3.1 基础dataset的准备 3.2 文本序列化 四.构建模型 4.1 仅有全连接层 4.2 LSTM 4.3 训练和测试 五.完整代码 5.1 ...
最新文章
- iOS 开发 高级:使用 宏定义macros (#,##,...,__VA_ARGS_)
- 通过修改注册表提升SSD性能(Intel 5系列芯片组)
- 【超详细】DBCP连接池配置参数说明
- Swift学习之map、flatMap、filter、reduce的使用
- [原]排错实战——拯救加载调试符号失败的IDA
- 【BIM入门实战】Revit2018项目模板、族库图文安装教程
- 基于java的数据结构学习——数组实现的栈以及简单应用C++实现
- ubuntu shuangxitong
- Bailian2930 加减乘除【水题】
- java中级参考教材答案_Java中级开发工程师笔试题及答案(2)
- 常用网络测试的命令的实验报告计算机网络,实验一常用网络命令的使用实验报告-20210409133504.docx-原创力文档...
- icon 做成html形式,CSS icon的各种做法
- wps如何只让他显示3级标题_wps怎么把标题显示出来
- Spark视频王家林大神 第7课: Spark机器学习内幕剖析
- vs2008中文版提供下载(包含中文msdn),包括vs2008序列号和破解方法。
- 关于Virtual的英语含义
- 在HBuilder里为什么输入汉字是繁体字,而我的输入法设置的是简体
- mysql notifier什么_MySQLNotifier这个东西有什么作用?
- html展开插件,分享10款功能强大的HTML5/CSS3应用插件
- 社区产品如何搭建内容体系?看看懂球帝与虎扑如何做
热门文章
- Java8 HashMap详解
- oracle创建外键约束的两种方式
- Java对【JSON数据的解析】--Gson解析法
- mybatis传递多个参数_Mybatis传递多个参数的4种方式(干货)
- (Mybatis)Mybatis简介和初步使用
- textarea实现datalist效果_手把手撸代码实现Virtual Dom amp;amp; Diff
- ue4 怎么传递变量到另一个蓝图_资深建模教你放置UE4蓝图节点,所以你就不要偷懒啦,认真点学...
- c语言搜索关键字吗,c语言-以关键字搜索程序
- easyui分页查询为什么会有下拉框_做网站优化为什么要分析百度下拉词和相关搜索?...
- 小米6通话音量补丁_智能手机的音量键有很多功能,你用过吗?