1 硬件加速
采用GPU。
GPU多机多卡。
2 框架加速
在同样的模型,同样的配置下,采用Tensorflow ,caffe,mxnet或者CNTK的速度也不一样。具体性能可以参考这篇文章http://mp.weixin.qq.com/s/Im2JWJYGBQbOfzikFrEMsA,相比来说caffe在多机多卡的GPU环境下,加速更明显。
3 模型选取
当下比较经典的深度学习网络包括AlexNet,GoogleNet(Inception),ResNet等。模型的层数越多,对硬件的要求越高,受限于GPU的缓存,每次mini batch的数量随层次增多而变少,训练时间越久,效果越差。 最近多伦多大学新提出的RevNet解决了这个问题,可以参考http://mp.weixin.qq.com/s/sLrHUr7Qgp2itx5PBFkNuA。
如果是自己搭建模型,在梯度下降的算法当年可以考虑Adam梯度下降。
4 超参数
选取合适的初始值。
学习率递减。
5 数据策略
数据归一化。在梯度下降算法中,数据尺度的不统一,会导致小尺度维度的梯度下降缓慢,延长迭代轮数。为此,可以采用减去平均值,除以方差的方式标准化输入。
当样本量足够大时,使用mini-batch代替batch。mini-batch一般选取64-512,1024比较少见。最好是2的n次方,而且要和CPU/GPU相匹配。
未完待续