zoukankan      html  css  js  c++  java
  • 神经网络中Batch Size的理解

    直观的理解:
    Batch Size定义:一次训练所选取的样本数。
    Batch Size的大小影响模型的优化程度和速度。同时其直接影响到GPU内存的使用情况,假如你GPU内存不大,该数值最好设置小一点。

    为什么要提出Batch Size?
    在没有使用Batch Size之前,这意味着网络在训练时,是一次把所有的数据(整个数据库)输入网络中,然后计算它们的梯度进行反向传播,由于在计算梯度时使用了整个数据库,所以计算得到的梯度方向更为准确。但在这情况下,计算得到不同梯度值差别巨大,难以使用一个全局的学习率,所以这时一般使用Rprop这种基于梯度符号的训练算法,单独进行梯度更新。
    在小样本数的数据库中,不使用Batch Size是可行的,而且效果也很好。但是一旦是大型的数据库,一次性把所有数据输进网络,肯定会引起内存的爆炸。所以就提出Batch Size的概念。

    Batch Size设置合适时的优点:
    1、通过并行化提高内存的利用率。就是尽量让你的GPU满载运行,提高训练速度。
    2、单个epoch的迭代次数减少了,参数的调整也慢了,假如要达到相同的识别精度,需要更多的epoch。
    3、适当Batch Size使得梯度下降方向更加准确。

    Batch Size从小到大的变化对网络影响
    1、没有Batch Size,梯度准确,只适用于小样本数据库
    2、Batch Size=1,梯度变来变去,非常不准确,网络很难收敛。
    3、Batch Size增大,梯度变准确,
    4、Batch Size增大,梯度已经非常准确,再增加Batch Size也没有用

    注意:Batch Size增大了,要到达相同的准确度,必须要增大epoch。

    GD(Gradient Descent):就是没有利用Batch Size,用基于整个数据库得到梯度,梯度准确,但数据量大时,计算非常耗时,同时神经网络常是非凸的,网络最终可能收敛到初始点附近的局部最优点。

    SGD(Stochastic Gradient Descent):就是Batch Size=1,每次计算一个样本,梯度不准确,所以学习率要降低。

    mini-batch SGD:就是选着合适Batch Size的SGD算法,mini-batch利用噪声梯度,一定程度上缓解了GD算法直接掉进初始点附近的局部最优值。同时梯度准确了,学习率要加大。
    版权声明:本文为CSDN博主「Star_ACE」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_34886403/article/details/82558399

  • 相关阅读:
    APS系统如何落地?用户实际痛点解析!
    供应链如何优化?高级排程系统为其运算
    不懂APS系统?十个问答让你对APS瞬间明明白白
    智能制造主战场在哪?数字化车间建设尤为重要
    中国制造转型的关键在哪里?智能制造点亮发展明灯
    你家的APS系统有这些功能吗?排程系统功能盘点
    微软正开发Office Reader和Office Lens
    C#的3DES加密解密算法
    如何在SharePoint2010中创建自定义电子邮件警报处理程序
    规划SharePoint2010的管理员密码更改
  • 原文地址:https://www.cnblogs.com/yibeimingyue/p/11697761.html
Copyright © 2011-2022 走看看