batchsize怎么设置(aperturesize)

现在很多算法都用到了batch,这里简单说下batchsize如何设置先来介绍下epoch、iteration、batchsize三者区别:batchsize:批大小,在深度学习中,一般采用SGD(随机梯度下降)训练,即每次训练在训练集中取batchsize个样本训练;iteration:1个iteration等于使用batchsize个样本训练一次epoch:1个epoch等于使用训练集中的全部样本训练一次为什么要设batchsize?1.当数据量足够大的时候可以适当的…

大家好,又见面了,我是你们的朋友全栈君。

现在很多算法都用到了batch, 这里简单说下batchsize如何设置

先来介绍下epoch、iteration、batchsize 三者区别:

batchsize:批大小,在深度学习中,一般采用SGD(随机梯度下降)训练,即每次训练在训练集中取batchsize个样本训练;

iteration:1个iteration等于使用batchsize个样本训练一次

epoch:1个epoch等于使用训练集中的全部样本训练一次

 

为什么要设batchsize?

1. 当数据量足够大的时候可以适当的减小batch_size,由于数据量太大,内存不够。需要设置batchsize来降低每次iteration的样本量,从而降低内存占用。 (这也是为什么很多时候我们设置sequence max len变大的时候,相应的batch size就要设小一点)

2. 全量数据噪声较少,相对稳定,梯度容易收敛到局部最优,而一定的batch会带来一些噪声和扰动,在局部最优点容易跳出。

 

batchsize也不能无限降低,batch_size=1时为在线学习,也是标准的SGD,这样学习,如果数据量不大,noise数据存在时,模型容易被noise带偏,如果数据量足够大,noise的影响会被“冲淡”,对模型几乎不影响。

 

batchsize太小会有哪些危害?

1. 会导致模型无法收敛,batchsize太小会引起梯度巨大波动,导致无法收敛

 

增大batchsize的好处:

1. 内存的利用率提高了,大矩阵乘法的并行化效率提高。

2. 跑完一次epoch(全数据集)所需迭代次数减少,对于相同的数据量的处理速度进一步加快。

3. 一定范围内,batchsize越大,其确定的下降方向就越准,引起训练震荡越小

 

batchsize过大的坏处:

1. 当数据集太大时,内存撑不住。

2. (全数据集)所需迭代次数减少了,但要想达到相同的 精度,时间开销太大,参数的修正更加缓慢。

3. batchsize增大到一定的程度,其确定的下降方向已经基本不再变化。

 

经验之谈:

1. batch的选择,首先决定的是下降方向,如果数据集比较小,则完全可以采用全数据集的形式。 

①全数据集的方向能够更好的代表样本总体,确定其极值所在。

②由于不同权重的梯度值差别巨大,因此选取一个全局的学习率很困难。 (这句没太看懂)

2. batch数太小,而类别又比较多的时候,真的可能会导致loss函数震荡而不收敛,尤其是在你的网络比较复杂的时候。

增大batch size能减缓梯度震荡,需要更少的迭代优化次数,收敛的更快,但是每次迭代耗时更长。
https://zhuanlan.zhihu.com/p/31558973

3. 随着batchsize增大,处理相同的数据量的速度越快。

4. 随着batchsize增大,达到相同精度所需要的epoch数量越来越多。

5. Batch_Size 增大到某个时候,达到时间上的最优。由于最终收敛精度会陷入不同的局部极值,因此 Batch_Size 增大到某些时候,达到最终收敛精度上的最优。

6. 过大的batchsize的结果是网络很容易收敛到一些不好的局部最优点。同样太小的batch也存在一些问题,比如训练速度很慢,训练不容易收敛等。

7. 具体的batch size的选取和训练集的样本数目相关。

8. 设置batch的同时,一定记得数据shuffle

9. 显存占用不是和batchsize简单成正比

10. 要想收敛到同一个最优点,使用整个样本集时,虽然迭代次数少,但是每次迭代的时间长,耗费的总时间是大于使用少量样本多次迭代的情况的。

 实际上,工程上在使用GPU训练时,跑一个样本花的时间与跑几十个样本甚至几百个样本的时间是一样的!当然得益于GPU里面超多的核,超强的并行计算能力啦。因此,在工程实际中,从收敛速度的角度来说,小批量的样本集是最优的,也就是我们所说的mini-batch。这时的batch size往往从几十到几百不等,但一般不会超过几千。

batch的size设置的不能太大也不能太小,因此实际工程中最常用的就是mini-batch,一般size设置为几十或者几百。

11.样本量少的时候会带来很大的方差,而这个大方差恰好会导致我们在梯度下降到很差的局部最优点(只是微微凸下去的最优点)和鞍点的时候不稳定,一不小心就因为一个大噪声的到来导致炸出了局部最优点。

与之相反的,当样本量很多时,方差很小,对梯度的估计要准确和稳定的多,因此反而在差劲的局部最优点和鞍点时反而容易自信的呆着不走了,从而导致神经网络收敛到很差的点上,跟出了bug一样的差劲。

12. 对于二阶优化算法,减小batch换来的收敛速度提升远不如引入大量噪声导致的性能下降,因此在使用二阶优化算法时,往往要采用大batch哦。此时往往batch设置成几千甚至一两万才能发挥出最佳性能。

13.GPU对2的幂次的batch可以发挥更佳的性能,因此设置成16、32、64、128…时往往要比设置为整10、整100的倍数时表现更优

 

 

 

参考链接:

https://blog.csdn.net/zqx951102/article/details/88918948 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127776.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 已安装的实例怎么删除_如何删除数据库实例

    已安装的实例怎么删除_如何删除数据库实例1.事件问题描述考虑到整个项目组的需求,我将PLC博图V16卸载,然后重新下载安装博图V15.1,然而因为在删除前博图V16时没有删除干净,安装博图V15.1导致出现以下问题:请删除SQLServer的”WinCC”实例,因为在卸载”WinCCProfessional”或”WinCCRuntimeProfessional”之后,该实例仍然存在于TIAPortal.2.解决方案…

    2022年10月2日
  • net start命令发生系统错误5和错误1058的解决方法

    net start命令发生系统错误5和错误1058的解决方法文章来源:1.netstart命令netstart命令用于开启服务,格式为:netstart[服务名]2.打开SqlServer的默认实例服务[Win+R]快捷键—>cmd—>netstartmssqlserver提示错误“发生系统错误5”,截图如下:3.错误分析发生这个错误的原因是win7/win8命令提示符管理员和非管理员权限有区别,需要

    2022年7月26日
  • idea2021激活吗[最新免费获取]

    (idea2021激活吗)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月30日
  • html5是什么意思,HTML5是什么 HTML5是什么意思?

    html5是什么意思,HTML5是什么 HTML5是什么意思?随着Windows8正式版发布的脚步近在咫尺,近来关于Win8、IE10、HTML5的新闻逐渐增多,很多朋友对于Win8系统以及IE10浏览器都比较了解,但对于HTML5是什么还真有不少朋友不清楚,很多媒体网站在报道IE10浏览器支持最新html5的时候,不少朋友还是一头雾水,以下电脑百事网小编为大家简单介绍下HTML5是什么。HTML5是什么HTML5是什么意思专业的说,HTML5是用于取代1…

    2022年10月27日
  • Android studio 升级 Write access is allowed from event dispatch thread only

    Android studio 升级 Write access is allowed from event dispatch thread only

    2021年9月30日
  • ubuntu20.04安装pycharm2021.3.3_ubuntu镜像安装

    ubuntu20.04安装pycharm2021.3.3_ubuntu镜像安装1.下载PyCharmhttps://www.jetbrains.com/pycharm/download/#section=linux这里我下载的是社区开源免费版2.解压PyCharm我下载的pycharm放到了下载文件夹中,在下载文件夹中启动终端,输入以下命令解压到当前文件夹tar-xzfpycharm-community-2021.1.3.tar.gz3.在opt目录下新建pycharm文件夹用于放置pycharm程序文件opt文件夹主要是:安装程序的引导和程序文件,如果缺少必

    2022年8月27日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号