深度学习——训练时碰到的超参数

文章目录

  • 深度学习——训练时碰到的超参数
    • 一、前言​
    • 二、一些常见的超参数
      • 学习率(Learning rate)
      • 迭代次数(iteration)
      • batchsize
      • epoch
    • 三、例子
    • 四、References

一、前言​

在训练深度神经网络时,会碰到一些超参数,通过观察在训练过程中的监测指标如损失loss和准确率来判断当前模型处于什么样的训练状态,及时调整超参数以更科学地训练模型能够提高资源利用率。

总而言之,这里对深度学习中比较重要的或者常见的超参数做一个整理,我们可以根据实际情况修改超参数已达到最好的训练效果。

二、一些常见的超参数

  1. 学习率(Learning rate)

    学习率是控制模型的学习进度。从梯度下降算法的角度来说,通过选择合适的学习率,可以使梯度下降法得到更好的性能。学习率,即参数到达最优值过程的速度快慢。

    举个栗子:

    假如你从山峰的最高点根据梯度下降法寻找最优值,当你学习率过大,即下降的快,步子大,那么你很可能会在某一步跨过最优值;当你学习率过小时,每次下降一厘米,这将走到何年何月呀,用术语来说就是,长时间无法收敛。因此,学习率直接决定着学习算法的性能表现。

    学习率的设置:

    学习率 大 学习率 小
    学习速度
    使用时间点 刚开始训练时 一定轮数过后
    副作用 1.易损失值爆炸;2.易振荡。 1.易过拟合;2.收敛速度慢。

    在训练过程中,一般根据训练轮数设置动态变化的学习率。

    • 刚开始训练时:学习率以 0.01 ~ 0.001 为宜。
    • 一定轮数过后:逐渐减缓。
    • 接近训练结束:学习速率的衰减应该在100倍以上。

    理想情况下曲线应该是滑梯式下降 [红线]

    1. 曲线 初始时上扬 [黄线]
      Solution:初始学习率过大导致振荡,应减小学习率,并从头开始训练 。
    2. 曲线初始时强势下降没多久归水平 [绿线]
      Solution:后期学习率过大导致无法拟合,应减小学习率,并重新训练后几轮 。
    3. 曲线全程缓慢 [蓝线]
      Solution:初始学习率过小 导致 收敛慢,应增大学习率,并从头 开始训练 。
  2. 迭代次数(iteration)

    迭代是重复反馈的动作,神经网络中我们希望通过迭代进行多次的训练以达到所需的目标或结果。每一次迭代得到的结果都会被作为下一次迭代的初始值。 一次迭代=一个正向传播+一个反向传播。每一次迭代得到的结果都会被作为下一次迭代的初始值。 我们可以查看loss曲线,来判断迭代次数够不够,如果loss从曲线上看已经收敛了,那么说明训练差不多了,再增加迭代也没什么用了,如果迭代结束了,但loss曲线并没有收敛的趋势,那么说明迭代设置的太小了。

  3. batchsize

    批大小。在深度学习中,一般采用随机梯度下降法(SGD)训练,即每次训练在训练集中取batchsize个样本训练(不是一次就把所有数据集扔进去训练,每次只取batchsize)。相对于正常数据集,如果batchsize过小,训练数据就会非常难收敛,从而导致欠拟合;增大batchsize,相对处理速度加快,所需内存容量也会增加。因此我们需要寻找最好的batchsize。再次重申:batchsize的正确选择是为了在内存效率和内存容量之间寻找最佳平衡,batchsize过大可能会导致内存不够用或程序内核崩溃。1次iteration等于使用batchsize个样本训练一次;batchsize通常取值为[16,32,64,128,256], 网络较小时选用256,较大时选用64。

  4. epoch

    通俗的讲epoch的值就是整个数据集被轮了几次。一个epoch=所有训练样本的一个正向传播和一个反向传播,也就是等于使用训练集中的全部样本训练一次。在神经网络中传递完整的数据集一次是不够的,所以我们需要将完整的数据集在同样的神经网络中传递多次。

三、例子

假设训练集有1000个样本,batchsize=10,那么训练完整个样本集需要:100次iteration,1次epoch。

名词 定义
epoch 使用训练集的全部数据对模型进行一次完整的训练,被称之为"一代训练"
batch 每次训练使用数据集的一小部分(batchsize)对模型进行一次的训练,被称之为"一批训练"
iteration s使用一个batchsize大小的数据对模型进行一次参数更新的过程,被称之为"一次训练"

四、References

  • https://blog.csdn.net/program_developer/article/details/78597738
  • https://blog.csdn.net/john_kai/article/details/72861731
  • https://blog.csdn.net/qq_37274615/article/details/81147013

深度学习——训练时碰到的超参数相关推荐

  1. 深度学习笔记(11) 超参数调试

    深度学习笔记(11) 超参数调试 1. 选择合适的范围 2. 超参数调试实践 1. 选择合适的范围 关于训练深度最难的事情之一是要处理的参数的数量 学习速率 a 到 Momentum(动量梯度下降法) ...

  2. 深度学习中的验证集和超参数简介

    大多数机器学习算法都有超参数,可以设置来控制算法行为.超参数的值不是通过学习算法本身学习出来的(尽管我们可以设计一个嵌套的学习过程,一个学习算法为另一个学习算法学出最优超参数). 在多项式回归示例中, ...

  3. 吴恩达老师深度学习视频课笔记:超参数调试、Batch正则化和程序框架

            Tuning process(调试处理):神经网络的调整会涉及到许多不同超参数的设置.需要调试的重要超参数一般包括:学习率.momentum.mini-batch size.隐藏单元( ...

  4. 深度学习训练时GPU温度过高?几个命令,为你的GPU迅速降温。

    新买回来的不带水冷公版GPU,在满负载运行的时候,温度从室温马上飙升到85度,而且模型训练不是几分钟完事,很有可能要长期保持在高温状态下运行,让如此昂贵的GPU一直发烧真是让人太心疼! 首先得到知乎上 ...

  5. 深度学习训练时GPU利用率忽高忽低如何解决?

    在windowas上进行深度学习的时候,可能会出现GPU负载忽高忽低的现象,(突然98,突然50...) 这种情况很有可能是 读数据或者数据预处理的时间过长,读数据部分可以尝试把全部或者部分数据放在内 ...

  6. GPU深度学习训练时出现train_loss一直不变且val_loss不变的问题

    清除pycharm缓存 pycharm缓存位置:C:\Users\A\.PyCharm2018.3\system\caches

  7. 深度学习训练时GPU利用率忽高忽低问题

    gpu利用率经常在0-99%之间跳动,找了一圈原因,可能是以下几点: 1. 数据预处理:CPU预处理太长,GPU空闲跟不上 解决办法: 可能是读数据或者数据预处理的时间过长,读数据部分可以尝试把全部或 ...

  8. 深度学习训练技巧总结

    参考: 1 技巧链接一!重要 技巧链接二!重要 技巧链接三!重要 模型训练技巧最直接的就是几个超参数的设置 根据图片大小来选择网络和超参数 如果图片不是很大比如3030,这种情况下做分类就不能用VGG ...

  9. 【深度学习】PyTorch深度学习训练可视化工具visdom

    PyTorch Author:louwill Machine Learning Lab 在进行深度学习实验时,能够可视化地对训练过程和结果进行展示是非常有必要的.除了Torch版本的TensorBoa ...

最新文章

  1. 使用pt-slave-delay实现mysql的延迟备份
  2. system文件_大文件拷贝,试试NIO的内存映射
  3. Subversion 1.5 安装配置指南
  4. 在Spring Boot测试中使用Testcontainer进行数据库集成测试
  5. 创建链路状态状态数据包
  6. python中seth是啥意思_python中的seth是什么意思
  7. android 常见的异常,Android 几个常见异常且容易被忽略的地方
  8. 哪种不是python元组的定义方式_最新python 笔试题
  9. yuki翻译器钩子_【galgame游戏剧情翻译工具】YUKI整合翻译工具下载
  10. CentOS简单上手——第四篇
  11. 主分区损坏diskgenius_使用Diskgenius完成磁盘结构损坏且无法读取的的情况
  12. C++中函数的重载,重写,重定义
  13. 华中科技计算机第七次作业,电路理论(黑皮版) 华中科技大学陈明辉第7章
  14. An End-to-End Steel Surface Defect Detection Approach via Fusing Multiple Hierarchical Features
  15. java-easyExcel导出-合并单元格
  16. 修改Chrome默认的搜索引擎
  17. 云原生社区 meetup 第四期广州站报名中
  18. 二狗子的志愿者故事20210121
  19. windows系统 nginx域名基本配置
  20. Android ActionBar中Overflow Menu(溢出菜单)中的一些问题

热门文章

  1. LocationDemo has leaked ServiceConnection 异常并且无法定位的时候
  2. [SDOI2009]晨跑
  3. CentOS的el5, el6, el7代表什么
  4. [WCF编程]1.WCF入门示例
  5. vb matlab 比较,【笔记】VB.NET和MATLAB读取二进制文件(中文+数值)之比较
  6. python字典方法汇总_python字典的操作总结
  7. html页面显示用户在线统计,在HTML页面中实现点击数统计
  8. 吗 使用的是_论文是可以反复使用吗?
  9. php-cgi 重启,自动监测和重启 FastCGI 服务
  10. java的工作原理你知道吗_每天用Mybatis,但是Mybatis的工作原理你真的知道吗?