夜雨聆风学习资料网

ARTICLE · 1223240

DenseNet 源码精读:残差相加换成特征拼接

DenseNet 源码精读:残差相加换成特征拼接

DenseNet 源码精读:残差相加换成特征拼接

1001 层的 ResNet 带着 10.2M 参数,在 CIFAR-10 上测出 4.62% 的误差。同一张表里,100 层的 DenseNet-BC 只带 0.8M 参数,跑出 4.51%。参数省下九成,误差还低了一线。

它动的地方只有一处:层和层怎么连。ResNet 把两条路的结果相加;DenseNet 改成把前面所有层的特征图沿通道拼起来。第 ℓ 层的输入,是前 ℓ−1 层全部特征的拼接。自己的输出再喂给后面所有层。L 层网络因此有 L(L+1)/2 条直连,而不是 L 条。

每层只往全网共享的特征池里添少量新图,相似的东西就不必反复重学。块内全连接,块间用 BN、1×1 卷积和平均池化换尺寸。每层只产出 k 张新特征图,k=12 就够用。再加瓶颈层和压缩,0.8M 参数的模型才拿到 4.51。

代价也摆在那:递归拼接让第一层的输出在显存里被复制 N 份,标准实现里显存按平方级增长。ImageNet 的超参也是照 ResNet 调的,作者自己承认还有调参空间。省参数的幅度还随数据规模收窄,选骨干时这笔账得重新算。

原文DenseNet 源码精读:残差相加换成特征拼接,0.8M 参数怎么追平 10M 的千层 ResNet
上海,3小时前,

相关学习资料