本文主要是介绍对ResNet和DenseNet的一点比较,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在之前的文章中,我曾经详细的分析过DenseNet。随着时间的推移,越来越多的人开始关注DenseNet并且把它应用到实际的项目中(我从百度搜索的统计上得到这个结论 ?)。所以我决定也在应用这方面写一点。
当前卷积网络使用最广泛的两种结构是ResNet和Inception,当然还有各种衍生系列以及它俩的合体Inception-Resnet。从结构特点上,它们都是某个小结构的组合,包括DenseNet也是这样,这也符合一般的规律。但是ResNet和DenseNet有一点显著的不同,那就是Residual Block比Dense Block要小得多。这个不同使Residual Block更容易灵活的拼接组合到各种不同的网络里,不见得一定要使用整个ResNet101或者ResNet152什么的,单独用几个Residual Block也能见效,比如CycleGAN风格的生成器就使用了这种结构。Inception块比残差块要大一些,但是作为一个单独的模块使用也没什么问题。
而Dense Block就不一样了,由于Dense的结构,每一层的Channel都不能太多,所以只能使用比较多的层数,典型的一个block要12层。根据我的试验,缩减层数(为保持平衡而)适当增加每层Channel的Dense Block效果很差,基本没有使用价值。这也是DenseNet用的不如ResNet广泛的一个原因。
这篇文章就是写这一点 ?
这篇关于对ResNet和DenseNet的一点比较的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!