深度学习:DenseNet思想总结

简介: 深度学习:DenseNet思想总结

深度学习:DenseNet思想总结

前言

论文中提出的架构为了确保网络层之间的最大信息流,将所有层直接彼此连接。为了保持前馈特性,每个层从前面的所有层获得额外的输入,并将自己的特征映射传递到后面的所有层。该论文基于这个观察提出了以前馈的方式将每个层与其他层连接的密集卷积网络(DenseNet)。

DenseNet

ResNet

在原始的神经网络中,假设第l层的function 为 $H_l$,那么第l层的output $x_l=H_l(x_{l-1})$,ResNet在网络中加入了identity mapping的机制,于是$x_l = H(x_{l-1})+x_{l-1}$。
ResNet的优势是缓解了梯度消失,让训练更稳定,但是 identity mapping 采用了add 融合的机制,可能会阻碍信息流动。

Dense connection

在这里插入图片描述

为了进一步的优化信息流动,作者提出了不同的连接形式如上图,每一层的输出都会直接传递到的后面所有网络,每一层的输入汇聚了前层所有的输出,这也是densenet的dense的由来,公式如下:
$x_l= H_l([x_0,x_1......x_{l-1}])$
其中跨层连接不在像ResNet采用add融合而是Concat融合,feature map

Composite function

这里作者对H()做了一个解释:这个函数分为三个操作,包括BN层,ReLU激活函数,3 * 3 Conv。

Pooling layers

在这里插入图片描述
由于跨层连接要求feature map的宽高一致,但是down- sampling在网络中也是必不可少的,所以引入了pooling layer(也叫做 transition layer)来对feature map下采样,这个网络层由 BN层 +1 1Conv +2 2 的average pooling layers。

Growth rate

这里我们定义了一个超参数k,他表示dense block中每层的channels数(也是卷积核的数量),假设dense block中input channels 为 k0,那么这个block第 l层的channels为k0+k(l-1)。k越大,代表每一层可以获得多少新的信息,block最后output的channels也就越大,于是我们把 k也叫做 growth rate。

Bottleneck layers

bottleneck 与resent的基本一致,没3 3 的Conv前面引入了 1 1的 Conv,那么我们定一个新的结构:
BN+ReLU+ 1 1Conv + BN +ReLU +Conv3 3叫做DenseNet-B。

Compression

没了进一步压缩模型,我们可以减少feature map的数量在 transition层,如果densenet block的output为 m 个feature map,那么通过transition后,channels变为theta * m,其中 theta为0到1之间的数。作者在实验中theta设置为0.5,把bottleneck+transition 叫做 DenseNet -BC。

Implementation Details

在这里插入图片描述

总结

  1. DenseNet的跨层连接为concat,ResNet为add。
  2. DenseNet提升了梯度的利用率,loss可以获得前面每一层的梯度,网络的层数更多了。
  3. DenseNet致力于特征reuse,提高网络性能。
  4. DenseNet的dense connection有正则化的作用。
目录
相关文章
|
1月前
|
机器学习/深度学习 算法 PyTorch
【动手学深度学习】深入浅出深度学习之线性神经网络
【动手学深度学习】深入浅出深度学习之线性神经网络
68 9
|
1月前
|
机器学习/深度学习 存储 人工智能
深度学习第1天:深度学习入门-Keras与典型神经网络结构
深度学习第1天:深度学习入门-Keras与典型神经网络结构
36 0
|
机器学习/深度学习 算法 PyTorch
深度学习经典算法PPO的通俗理解
#1 前置知识点 基本概念 [https://www.yuque.com/docs/share/04b60c4c-90ec-49c7-8a47-0dae7d3c78c7?#](https://www.yuque.com/docs/share/04b60c4c-90ec-49c7-8a47-0dae7d3c78c7?#) (部分符合的定义在这里) 要理解PPO,就必须先理解Actor
8626 0
|
1月前
|
机器学习/深度学习 算法框架/工具 Python
深度学习第4天:感知机模型
深度学习第4天:感知机模型
20 0
|
2月前
|
机器学习/深度学习 PyTorch TensorFlow
python实现深度学习模型(如:卷积神经网络)。
【2月更文挑战第14天】【2月更文挑战第38篇】实现深度学习模型(如:卷积神经网络)。
|
12月前
|
机器学习/深度学习 算法 Serverless
瞎聊深度学习——神经网络基础(概念,正则化)
瞎聊深度学习——神经网络基础(概念,正则化)
|
12月前
|
机器学习/深度学习 PyTorch TensorFlow
深度学习相关概念:感知器
如今,Keras、TensorFlow 或 PyTorch 等框架提供了对大多数深度学习解决方案的交钥匙访问,而不必深入了解它们。但是,一旦您的模型没有按预期工作,这就会出现问题。您可能需要自己调整它。所以,如果你是来理解深度学习中感知器的概念,我认为你走在正确的轨道上,如果你想有一天能够以任何方式为这个生态系统做出贡献,那么了解这些的根源是必不可少的系统
104 0
|
机器学习/深度学习 算法
深度学习相关概念:梯度下降
 在深度学习中,你一定听说过“梯度下降”,在绝大部分的神经网络模型里有直接或者间接地使用了梯度下降的算法。深度学习的核心:就是把数据喂给一个人工设计的模型,然后让模型自动的“学习”,通过反向传播进而优化模型自身的各种参数,最终使得在某一组参数下该模型能够最佳的匹配该学习任务。
78 0
|
机器学习/深度学习 人工智能 PyTorch
【Pytorch神经网络基础理论篇】 05 矩阵计算
【Pytorch神经网络基础理论篇】 05 矩阵计算
61 0