densenet比resnet参数量少,但训练速度慢的原因分析

笔者做四分类模型时发现,训练好的densenet的h5模型参数量仅1.3M,远少于resnet50的271M,但训练速度却更慢。通过查找资料、分析网络结构发现,densenet参数少是因卷积输入输出channel数少;速度慢是因featuremap大,卷积计算量、内存占用和访问次数多。还参考博客侧面验证猜想。

    笔者做一个四分类的模型,发现了一个非常有意思的问题,就是训练好的densenet的h5模型只有1.3M的参数量,而resnet50的参数量有271M之多,但是训练的速度竟然是densenet更慢,笔者很迷惑,所以就查找了一些资料并对网络结构进行分析,做一下记录,供大家参考。

首先我查找了一些资料,进行分析,毕竟要先知道网络速度的快慢和啥有关对吧,参考如下博客,

https://blog.youkuaiyun.com/leayc/article/details/81001801

然后我把自己的densenet和resnent的模型打印出来,model.summery()得到了两个模型的结构,下面是densenet的(没截全,只取了一开始和结尾部分):

下面是resnet的(同样只是一开始和结尾部分):

通过对比可以发现densenet比resnet参数少的原因在于每一次卷积输入输出的chanenl个数要比resnet少很多,这样bn层的参数也会少很多,channel数对此的影响很大,全连接层的参数也比resnet少很多;densenet比resnet慢的原因在于,densenet的featuremap比resnet大很多,导致卷积过程的计算量比resnet大很多,简而言之就是flops要大一些,内存的占用要大一些,而且内存的访问次数要多很多,内存的访问是很慢的,可以参考上面的那个连接里面讲解的,而不是全连接层的原因,因为densenet的全连接参数比resnet要少很多。

分析完原因以后,又看了一篇博客,上面正好有相关的参数实验,https://blog.youkuaiyun.com/u011311291/article/details/82969409

里面涉及到vgg16及densenet201的参数和内存的消耗,虽然我自己没有动手实验自己的网络,但是从侧面已经验证了我的猜想。

 

评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值