Densenet网络理解

自从resnet之后人们开始讲不同层之间做不同的连接以期望得到更好的结果,本文的作者就提出了一种新的连接结构,并且有效的减轻了梯度消失的问题,加强了特征的传递,有效的理由了特征,减少了参数的数量以及计算量。
网络结构
Densenet网络理解_第1张图片
我们可以发现每一层的输入来自前面所有层的输出。
densenet和其他网络对比
在resnet中前一层的输入和后一层的输入是相加到一起的,这在某种程度上阻碍了信息在网络中的流动,但是在densenet中并不是直接相加的而是通过级联的方式连接在一起(concatenate)。同时densenet的参数校教育其他网络要少很多并且减轻了梯度消失的问题,因为在普通个网络中梯度是通过一层一层传递下去的导致梯度消失,但是在densenet中每一层都连接着后面的层,这就在某种程度上避免了这种现象的发生。初次之外,densenet很窄,每一层只有12个filter。文中指出resnet是通过网络的深度来提升模型的性能,googlenet是通过增加宽度来提升模型的性能,但是densenet是通过很好的利用feature来提升模型的性能的。
下图是densenet和restnet的公式对比:
在这里插入图片描述
在这里插入图片描述
从公式中可以看出二者本质的区别。

结构分析
下图为densenet的几个不同结构:
Densenet网络理解_第2张图片
1.growth rate
这里的growth rate其实就是每一层filter的数量,我们可以这样理解,每个层都可以访问其块中的所有前面的特征映射,每个层都将自己的k个特征映射添加到此状态,这个k就代表这一层对全局所做出的贡献。作者在实验时取k=12,其实这也就解释了为什么作者取这么小的k还能取得如此优异的效果。
2.block
由于如果尺度不一样的话输入和输出之间是不能连接的,因此作者将整个网络划分为一个一个的block,这样block之内的就可以连接了,另外作者还在block之间加入了transition层,由一个11的卷积层还有一个22的pooling层组成。11的卷积层主要是为了减少通道数从而降低了参数,因为一般来说前一个block出来的map都是各个层连接的,通道数很多,通过11卷积就可以有效的减少通道数,通常使得输入的通道数减半。
3.bottleneck layer
尽管每一层只有k个filter,但是如果层数过多参数的量还是会很大,因为后面的层是连接了前面所有的层,因此作者做了一个bottleneck的操作,和transition层一样,在33的卷基层之前在连接一个11的卷基层,这样就可以有效的介绍参数,一般1*1的filter数量取4k。

你可能感兴趣的:(Densenet网络理解)