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

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

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

https://blog.csdn.net/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.csdn.net/u011311291/article/details/82969409

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

 

  • 10
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Densenet、Googlenet和Resnet都是常用的深度学习模型,被广泛应用于图像分类任务中。下面是对它们的性能进行分析: 1. Densenet(密集连接网络):Densenet是一种基于密集连接的网络结构,通过将每一层的输出与后续层的输入连接在一起,实现了信息的高度共享和传递。这种连接方式减轻了梯度消失问题,使得模型更易训练Densenet数量相对较,模型轻巧,具有较好的空间利用率。在处理小样本数据集上表现良好。 2. Googlenet:Googlenet是由Google开发的神经网络模型,具有22层深度。通过使用多个不同大小的卷积核进行并行计算,并通过注意力机制引入了Inception模块,Googlenet在减数量的同时,仍能保持较高的准确率。此外,Googlenet通过辅助分类器和启发式池化策略,进一步提高了模型的性能。Googlenet适用于处理尺寸较大的图像数据集。 3. Resnet(残差网络):Resnet是一种基于残差学习的神经网络模型。通过引入残差块,使得网络可以学习到相对于输入的残差变化,从而解决了深层网络中的梯度消失问题。Resnet的模型深度可以达到数百层,但数量仅略高于较浅的模型。此外,Resnet中的快捷连接可以提高网络的收敛性,使得训练更加稳定。Resnet适用于处理非常深的网络和更复杂的图像任务。 总的来说,Densenet在小样本和资源受限的情况下具有较好的性能表现,Googlenet在处理较大图像数据集时表现良好,而Resnet则在处理深层网络和复杂任务时展现出优势。具体使用时,应根据具体的任务需求和资源限制选择适合的模型。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值