深度学习tips总结
来源:互联网 发布:爱丽丝疯狂回归mac版 编辑:程序博客网 时间:2024/05/17 02:40
注:本文是在阅读新智元的文章后总结,文中不少语句参考了原文作者,请知晓。
1、shuffle:在框架允许的前提下,每个epoch要shuffle一次;
2、扩展数据集:小数据集容易使得模型过拟合,但过分扩展会使得大都相同的数据,需采取一定的方法,避免出现相同的样本(尝试中);
3、在非常小的子数据集上训练进行过拟合,再在整个数据集上训练:以确定网络可以收敛;
4、始终是用dropout将过拟合的几率最小化:当神经元节点超过256时,就要使用dropout,Dropout as a Bayesian Approximation: Representing Model Uncertainty in Deep Learning [Gal Yarin & Zoubin Ghahramani,2015].;
5、MAX pooling会更快,避免使用LRN pooling;
6、避免使用sigmoid/tanh:代价昂贵,容易饱和,网络越深,越容易停止反向传播;而更简单有效的ReLU和PreLU能够促进稀疏性,其反向传播也更加鲁棒,Deep Sparse Rectifier Neural Networks;
7、在max pooling之前不要使用ReLU和PreLU,在保持计算之后再使用;
8、不要使用ReLU:虽然它们是很好的非线性函数,但是在微调模型时会阻碍反向传播,在初始化阶段被卡住,无法得到任何微调效果;可以使用PreLU以及一个很小的乘数(通常是0.1),收敛更快;
9、经常使用批标准化(Batch Normalization):可以允许更快的收敛以及更小的数据集,节省时间以及资源,Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift [Sergey Ioffe & Christian Szegedy,2015]。;
10、相对于减去平均值,更倾向于将数据压缩到[-1, +1]:针对训练和部署的技巧,而非提升性能;
11、小型化模型,并尝试 ensemble:以方便用户及服务,并提升准确度;
12、尽可能使用 xavier初始化:可在较大的全连接层上使用,避免在CNN层使用,An Explanation of Xavier Initialization(by Andy Jones);
13、如果输入数据有空间参数,可以尝试端到端CNN:SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size [Forrest N. Iandola et. al. 2016];
14、修改模型,只要可能就使用 1x1 的 CNN 层,它的位置对提高性能很有帮助。
15、假如你要利用模型或你自己的层来制作模板,记得把所有东西参数化,否则你得重建所有二进制文件。
16、了解正在着手的任务及使用的结构,莫要盲目地复制模型;
参考资料:
1、 Ian Goodfellow , Yoshua Bengio 和 Aaron Courville 合著的经典教材《深度学习》(数学理论丰富)
2、邓力和俞栋合著的《深度学习:方法及应用》(关于历史与介绍)
3、Timothy Masters 写的 Deep Belief Nets in C++ and CUDA C, Vol. 1: Restricted Boltzmann Machines and Supervised Feedforward Networks(实现算法)
- 深度学习tips总结
- 深度学习tips
- 深度学习tips-降低模型的方差
- 深度学习tips-搭建深度学习模型,不知如何下手?
- tips小项目学习总结
- 深度学习--学习总结
- 深度学习总结
- 深度学习总结
- 深度学习关键技术总结
- 深度学习总结
- 深度学习总结
- 深度学习总结
- 深度学习总结
- 深度学习资源总结
- 深度学习原理总结
- 深度学习资料总结
- 深度学习框架总结
- 深度学习框架总结
- .net平台的rabbitmq使用封装
- javascript的call方法总结
- 悟透~ 《JavaScript》
- C++ STL之map和multimap用法
- 恭喜自己博客阅读量突破10000
- 深度学习tips总结
- 函数指针与回调函数
- Maven从入门到提高(四)
- 前端:常用的方法
- 关于font-size适应多设备的总结
- 劳动合同与聘用合同的区别
- MATLAB 抽取随机数 MCMC原理
- ASP.NET MVC:通过 FileResult 向 浏览器 发送文件
- aapt 命令可应用于查看apk包名、主activity、版本等很多信息