Pre-activation


使用了Identity Mapping in Residual Learning中的pre-activation思想,每个Conv+非线性的组合使用的是


特征重用方式

在一个DenseBlock中,使用而不是ResNet中的来完成特征重用。

一般使用Identity Mapping,最多用个来做维数匹配。

直接将所有previous层的输出concat到一起。


Transition层替代Pooling

  • .
  • 同样使用Pre-activation结构。
  • 使用 控制的输出通道数, 称为.

DenseNetB and DenseNetBC

DenseNet-B:

B stands for Bottleneck.对于每一个DenseLayer,使用的bottleneck结构,即先过一个 将channels变成,然后再进行,所有Conv都使用pre-activation. ( 这个值其实是比最终的该层输出的channels数 大的,论文原文提到使用固定的16或者来计算Bottleneck中间的通道数。但pytorch官方实现使用的。猜想是因为该数字等于一个DenseBlock中BlockLayer的层数。

DenseNet-BC

在DenseNet-B的基础上,加上了 ,实际上就是在Transition层的中,将输出channels设置为 DenseNet-BC中,DenseNet-BC在Pytorch官方实现中为且不可更改。