神经网络训练tricks
1、先别着急写代码
训练神经网络前,别管代码,先从预处理数据集开始。我们先花几个小时的时间,了解数据的分布并找出其中的规律。比如何凯明发现暗通道去雾算法。
一旦从数据中发现规律,可以编写一些代码对他们进行搜索、过滤、排序。把数据可视化能帮助我们发现异常值,而异常值总能揭示数据的质量或预处理中的一些错误。
2、设置端到端的训练评估框架
下一步是建立一个完整的训练+评估框架。
这个阶段的技巧有:
· 固定随机种子
使用固定的随机种子,来保证运行代码两次都获得相同的结果,消除差异因素。
· 过拟合一个batch
比如在超分辨率中可以只测试一张图片,验证我们可以达到的最低损失(即最高性能指标)。
· Adam
在设定基线的早期阶段,使用学习率为3e-4的Adam 。一般不会出现问题
· 一次只复杂化一个
多个模块逐个输入,然后增加复杂性,确保预期的性能逐步提升,而不要一股脑儿全放进去。
· 不要相信学习率衰减默认值
代码可能会过早地将学习率减少到零,导致模型无法收敛。设置合理的衰减策略
· 数据增广
把数据集做大,除了扩大数据集的种类之外,就是扩增了。一般的超分算法都有这一步。旋转,翻转,拉伸,做扩增的时候可以野性一点。甚至可以用上GAN生成的图片来扩充数据集。
· 预训练
使用预训练模型省时间。
· Dropout
目前有论文提出,超分任务中,在上采样之前的一层增加Dropout可以涨点(未验证)。
关于batch_size
参考:https://www.zhihu.com/question/456600260/answer/2380983385
简单来说:小的batch_size可以提升精度,大的batch_size训练快,但精度低
batch size的大小影响的是训练过程中的完成每个epoch所需的时间(假设算力确定了)和每次迭代(iteration)之间梯度的平滑程度。因此完成每个epoch所需的时间会随着迭代次数的增加而增加(此为batch_size影响的是完成每个epoch所需的时间)。
这也是为什么大的batch_size往往建议可以相应取大点learning_rate, 因为梯度震荡小,大learning_rate可以加速收敛过程,也可以防止陷入到局部最小值,而小batch_size用小learning_rate迭代,防止错过最优点,一直上下震荡没法收敛(这也是一个小trick)。
1. 若是loss还能降,指标还在升,那说明欠拟合,还没收敛,应该继续train,增大epoch。
2. 若是loss还能再降,指标也在降,说明过拟合了,那就得采用提前终止(减少epoch)或采用weight_decay等防过拟合措施。
3.若是设置epoch=16,到第8个epoch,loss也不降了,指标也不动了,说明8个epoch就够了,剩下的白算了。
当然以上说的都是预设的一些理想情况,现实中往往没有这么明确,就如第三种情况,它可能只是到了局部最优点,并没有最优,你可能换个大点的batch_size,模型就调了个方向继续下坡,指标又能往上走点,这也就是炼丹的奥秘了,这样的情况就不再讨论了。
最后附一个adm防抖动加decay的简单方法
自适应优化器Adam还需加learning-rate decay吗?
神经网络训练tricks相关推荐
- 神经网络训练中的Tricks之高效BP(反向传播算法)
神经网络训练中的Tricks之高效BP(反向传播算法) zouxy09@qq.com http://blog.csdn.net/zouxy09 Tricks!这是一个让人听了充满神秘和好奇的词.对于我 ...
- 训练深度学习_深度学习训练tricks整理1
深度学习训练tricks整理1 环境:pytorch1.4.0 + Ubuntu16.04 参考: 数据增强策略(一)mp.weixin.qq.com https://zhuanlan.zhihu. ...
- Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)
Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...
- 亚马逊马超:如何使用DGL进行大规模图神经网络训练?
演讲嘉宾 | 马超(亚马逊应用科学家) 整理 | 刘静 出品 | AI科技大本营(ID:rgznai100) 与传统基于张量(Tensor)的神经网络相比,图神经网络将图 (Graph) 作为输入, ...
- 谷歌力作:神经网络训练中的Batch依赖性很烦?那就消了它!
点击上方↑↑↑"视学算法"关注我 来源:公众号 量子位 授权转 再见了,批量依赖性(Batch Dependence). 优化神经网络方法千千万,批量归一化(Batch Norma ...
- 陈键飞:基于随机量化的高效神经网络训练理论及算法
[专栏:前沿进展]随着预训练模型参数规模的增长,所需的算力也不断增加,从算法层面研究和处理模型规模的增长成为研究者关注的话题.近期举办的Big Model Meetup第二期活动,特邀清华大学助理教授 ...
- 技术新进展!谷歌AI部门宣布发现新技术以加速AI神经网络训练
https://t.qianzhan.com/caijing/detail/190716-73349ac9.html 谷歌的张量处理器(TPU)和英特尔的Nervana神经网络处理器等人工智能加速器硬 ...
- 深度学习与计算机视觉系列(8)_神经网络训练与注意点
深度学习与计算机视觉系列(8)_神经网络训练与注意点 作者:寒小阳 时间:2016年1月. 出处:http://blog.csdn.net/han_xiaoyang/article/details ...
- 学界 | 数据并行化对神经网络训练有何影响?谷歌大脑进行了实证研究
选自arXiv 作者:Christopher J. Shallue 等 机器之心编译 参与:路.张倩 近期的硬件发展实现了前所未有的数据并行化,从而加速神经网络训练.利用下一代加速器的最简单方法是增加 ...
最新文章
- SpringBoot 之 MVC
- SCRFD is not in the models registry
- 《Access 2007开发指南(修订版)》一一1.5 什么是数据库对象
- 嵌入式软件架构设计分层思路
- LeetCode 60. 第k个排列(回溯 康托展开)
- 网上购物商城 html+css+MVC+sql server+idea编辑器实现。
- concat特征融合_如何理解concat和add的方式融合特征
- 直播丨Oracle 12cR2 ADG LGWR Library Cache案例分享
- Windows Server 2019安装OpenSSH Server简明教程
- 黑客大曝光:VoIP安全机密与解决方案
- spark-streaming 编程(三)连接kafka消费数据
- 中山大学计算机类专业是什么,中山大学2017年计算机类专业自主招生条件及专业优势...
- 贺新春丨大年初六 六六大顺
- 深度学习英文缩写_深度学习相关专业词汇简称汇总
- 深度学习思维导图(基于TensorFlow框架)
- 中国探月计算机考试时间,揭秘人类探月历程(组图)
- HTTP Headers 入门
- qt通过Tcp和SQL实现仿qq的聊天软件
- 3756. 筛选链表
- 我想讲的,都在这个故事里