Memory-Efficient Implementation of DenseNets

本文介绍了一种改进的DenseNet实现方式,通过共享存储空间降低模型显存占用,允许在GPU显存限制下训练更深的网络。该方法虽然增加了训练时间,但能有效提升模型性能。提供了PyTorch和TensorFlow的实现代码,以及超参数配置说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**论文地址:**https://arxiv.org/abs/1707.06990
**pytorch实现:**https://github.com/gpleiss/efficient_densenet_pytorch
**tensorflow实现:**https://github.com/joeyearsley/efficient_densenet_tensorflow

属于实现方式的改进,不是对网络的改进

对intermediate feature采用共享存储空间的方式来减低模型显存,但是会增加训练时间,因为需要重新计算一些层的输出。

之前的卷积网络在Concat和BN操作时都会申请新的内存空间,而现在通过提前分配的shared memory storage和指针将这些intermediate feature(concate和BN操作生成的特征)存储在temporary storage buffers中,大大减少存储量。

在GPU显存限制的情况下,可以训练更深的网络,因而效果可更好。
在这里插入图片描述

tensorflow实现:
超参数:
–batch_size(int) - 每批图像数(默认为3750)
–fp16(bool) - 是否与FP16一起运行(默认为False)
–efficient(bool) - 是否使用渐变检查点运行(默认为False)
其中用到了Horovod,Horovod可为用户实现分布式训练提供帮助
pytorch实现:
超参数:
可以通过设置参数efficient=True来决定是否共享存储空间。
–depth (int) - depth of the network (number of convolution layers) (default 40)
–growth_rate (int) - number of features added per DenseNet layer (default 12)
–n_epochs (int) - number of epochs for training (default 300)
–batch_size (int) - size of minibatch (default 256)
–seed (int) - manually set the random seed (default None)

还有以下实现方式:
LuaTorch (by Gao Huang)
MxNet (by Danlu Chen)
Caffe (by Tongcheng Li)
(都是论文作者诶)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值