所以densenet的参数量少,最重要的是他的输出通道数少,可以通过dense连接,将前面网络的输出拼接到后面的通道中,对吗?
你的理解非常准确,这正是 DenseNet 参数量少的核心原因。具体来说:
-
每层输出通道数极少
DenseNet 中,每层新增的输出通道数(称为 “增长率”,growth rate)通常很小(如 32 或 16),远小于 ResNet 中每层的通道数(如 64、128 等)。例如 DenseNet-121 的增长率为 32,意味着每层只需学习 32 个新的特征通道。
-
通过密集连接复用所有历史通道
虽然每层只输出 32 个新通道,但通过通道级拼接(Concatenate),当前层的输入包含了前面所有层的输出通道。例如:
- 第 1 层输入:初始 64 通道,输出 32 通道(总通道 = 64+32=96)
- 第 2 层输入:64+32=96 通道,输出 32 通道(总通道 = 96+32=128)
- 第 L 层输入:64 + 32×(L-1) 通道,输出 32 通道
这种 “小增量 + 全复用” 模式,让网络无需为每层设置大量通道,却能获得丰富的特征组合。
-
与 ResNet 的本质差异
ResNet 每层需要维持固定的高通道数(如 256、512)才能保证特征表达能力,因为它仅通过元素相加传递部分信息;而 DenseNet 通过拼接累积通道,用 “小通道增量” 实现了 “大特征容量”,自然减少了参数总量。
简言之:DenseNet 用 “通道拼接的复用” 替代了 “通道堆叠的冗余”,以极少的新增通道数实现了高效的特征学习,这是其参数量少的最关键原因。