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相关推荐

  1. 神经网络训练中的Tricks之高效BP(反向传播算法)

    神经网络训练中的Tricks之高效BP(反向传播算法) zouxy09@qq.com http://blog.csdn.net/zouxy09 Tricks!这是一个让人听了充满神秘和好奇的词.对于我 ...

  2. 训练深度学习_深度学习训练tricks整理1

    深度学习训练tricks整理1 环境:pytorch1.4.0 + Ubuntu16.04 参考: 数据增强策略(一)​mp.weixin.qq.com https://zhuanlan.zhihu. ...

  3. Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)

    Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...

  4. 亚马逊马超:如何使用DGL进行大规模图神经网络训练?

    演讲嘉宾 | 马超(亚马逊应用科学家) 整理 | 刘静  出品 | AI科技大本营(ID:rgznai100) 与传统基于张量(Tensor)的神经网络相比,图神经网络将图 (Graph) 作为输入, ...

  5. 谷歌力作:神经网络训练中的Batch依赖性很烦?那就消了它!

    点击上方↑↑↑"视学算法"关注我 来源:公众号 量子位 授权转 再见了,批量依赖性(Batch Dependence). 优化神经网络方法千千万,批量归一化(Batch Norma ...

  6. 陈键飞:基于随机量化的高效神经网络训练理论及算法

    [专栏:前沿进展]随着预训练模型参数规模的增长,所需的算力也不断增加,从算法层面研究和处理模型规模的增长成为研究者关注的话题.近期举办的Big Model Meetup第二期活动,特邀清华大学助理教授 ...

  7. 技术新进展!谷歌AI部门宣布发现新技术以加速AI神经网络训练

    https://t.qianzhan.com/caijing/detail/190716-73349ac9.html 谷歌的张量处理器(TPU)和英特尔的Nervana神经网络处理器等人工智能加速器硬 ...

  8. 深度学习与计算机视觉系列(8)_神经网络训练与注意点

    深度学习与计算机视觉系列(8)_神经网络训练与注意点 作者:寒小阳  时间:2016年1月.  出处:http://blog.csdn.net/han_xiaoyang/article/details ...

  9. 学界 | 数据并行化对神经网络训练有何影响?谷歌大脑进行了实证研究

    选自arXiv 作者:Christopher J. Shallue 等 机器之心编译 参与:路.张倩 近期的硬件发展实现了前所未有的数据并行化,从而加速神经网络训练.利用下一代加速器的最简单方法是增加 ...

最新文章

  1. SpringBoot 之 MVC
  2. SCRFD is not in the models registry
  3. 《Access 2007开发指南(修订版)》一一1.5 什么是数据库对象
  4. 嵌入式软件架构设计分层思路
  5. LeetCode 60. 第k个排列(回溯 康托展开)
  6. 网上购物商城 html+css+MVC+sql server+idea编辑器实现。
  7. concat特征融合_如何理解concat和add的方式融合特征
  8. 直播丨Oracle 12cR2 ADG LGWR Library Cache案例分享
  9. Windows Server 2019安装OpenSSH Server简明教程
  10. 黑客大曝光:VoIP安全机密与解决方案
  11. spark-streaming 编程(三)连接kafka消费数据
  12. 中山大学计算机类专业是什么,中山大学2017年计算机类专业自主招生条件及专业优势...
  13. 贺新春丨大年初六 六六大顺
  14. 深度学习英文缩写_深度学习相关专业词汇简称汇总
  15. 深度学习思维导图(基于TensorFlow框架)
  16. 中国探月计算机考试时间,揭秘人类探月历程(组图)
  17. HTTP Headers 入门
  18. qt通过Tcp和SQL实现仿qq的聊天软件
  19. 3756. 筛选链表
  20. 我想讲的,都在这个故事里

热门文章

  1. maya arnold渲染带有金光雕像渲染测试
  2. Activiti获取批注信息
  3. 华硕笔记本 M50VN XP 驱动
  4. 2013福建高职单招计算机类专业,2013福建高职单招 计算机类专业 知识试题
  5. 怎么用php做影院座位,电影院vip厅的座椅怎么调
  6. 原神官网HTML+CSS
  7. 情感分析项目基础知识总结二
  8. 芝麻换ip软件:大数据爬虫采集的应用流程
  9. 内蒙古大学计算机学院教授,内蒙古大学计算机学院研究生导师:闫蓉
  10. 【Android】一个APP检测另一个APP的Service被杀死时自动重启服务