DenseNet---密集卷积网络论文理解

pytorch代码:https://github.com/WangXiaoCao/attention-is-all-you-need-pytorch

参考博客:https://blog.csdn.net/sinat_33761963/article/details/83958802

1.模型结构

每一层网络的输入是前边所有层输出的连接。

公式:

DenseNet---密集卷积网络论文理解

 

DenseNet---密集卷积网络论文理解

网络的整体结构:

DenseNet---密集卷积网络论文理解

网络包括:(1)feature block即图中第一个卷积块;(2)dense block,该网络结构中有3个block,每个块中有n个dense层,即图中灰色圆圈,该层代表与前边几层输出相连接;白色圆圈表示上一层的输出;(3)transition block,包括卷积层和池化层;(4)classification block,包括pooling,linear;(5)预测层,用softmax进行分类。

2.重点理解dense block

2.1 dense layer

每一个灰色圆圈代表BN + ReLU + (Bottleneck) + 3x3conv + (Dropout)。模型中出现k值,是预先设定的,k = 32。

其中Bottleneck是可选的,主要目的是为了减少特征图数量;Dropout同样也是可选的,用于防止过拟合。

对于第一个块中的第一个圆圈来讲,输入是56x56x64---->56x56x64---->56x56x64---->(56x56x128---->56x56x128---->56x56x128)---->56x56x32(kernel_size=3, channel = k)---->56x56x32。

2.2 dense block

layer0(如块中白色圆圈):56x56x64---->56x56x32;

layer1:56x56x(32*1)---->56x56x32;只接收到layer0额输出;

layer2:56x56x(32*2)---->56x56x32;接收到layer0和layer1的输出,将两个输出的channel拼接自然得到32*2个channel;

layer3:56x56x(32*3)---->56x56x32;接收到layer0,layer1和layer2的输出;

layer4:56x56x(32*4)---->56x56x32;接收到layer0,layer1,layer2和layer3的输出;

.........

layer n:56x56x(32*n)---->56x56x32;接收到layer0,layer1,layer2.....layer n-1的输出。

具体的网络模型如图。

DenseNet---密集卷积网络论文理解