**论文地址:**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)
(都是论文作者诶)