1、什么是BatchSize

Batch一般被翻译为批量,设置batch_size的目的让模型在训练过程中每次选择批量的数据来进行处理。Batch Size的直观理解就是一次训练所选取的样本数。
Batch Size的大小影响模型的优化程度和速度。同时其直接影响到GPU内存的使用情况,假如你GPU内存不大,该数值最好设置小一点。

2、 为什么需要 Batch_Size?

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

3、 如何设置Batch_Size 的值?

设置BatchSize要注意一下几点:

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

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

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

4)由于上述两种因素的矛盾, Batch_Size 增大到某个时候,达到时间上的最优。

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

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

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

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

我在设置BatchSize的时候,首先选择大点的BatchSize把GPU占满,观察Loss收敛的情况,如果不收敛,或者收敛效果不好则降低BatchSize,一般常用16,32,64等。

4、在合理范围内,增大Batch_Size有何好处?

内存利用率提高了,大矩阵乘法的并行化效率提高。
跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。
在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。

5、 盲目增大 Batch_Size 有何坏处?

内存利用率提高了,但是内存容量可能撑不住了。
跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。
Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化。

6、调节 Batch_Size 对训练效果影响到底如何?

Batch_Size 太小,模型表现效果极其糟糕(error飙升)。
随着 Batch_Size 增大,处理相同数据量的速度越快。
随着 Batch_Size 增大,达到相同精度所需要的 epoch 数量越来越多。

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

batchsize过小:每次计算的梯度不稳定,引起训练的震荡比较大,很难收敛。

batchsize过大:

(1)提高了内存利用率,大矩阵乘法并行计算效率提高。

(2)计算的梯度方向比较准,引起的训练的震荡比较小。

(3)跑完一次epoch所需要的迭代次数变小,相同数据量的数据处理速度加快。

缺点:容易内容溢出,想要达到相同精度,epoch会越来越大,容易陷入局部最优,泛化性能差。

batchsize设置:通常10到100,一般设置为2的n次方。

原因:计算机的gpu和cpu的memory都是2进制方式存储的,设置2的n次方可以加快计算速度。

深度学习中经常看到epoch、 iteration和batchsize这三个的区别:

(1)batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;
(2)iteration:1个iteration等于使用batchsize个样本训练一次;
(3)epoch:1个epoch等于使用训练集中的全部样本训练一次;

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

1.当数据量足够大的时候可以适当的减小batch_size,由于数据量太大,内存不够。但盲目减少会导致无法收敛,batch_size=1时为在线学习,也是标准的SGD,这样学习,如果数据量不大,noise数据存在时,模型容易被noise带偏,如果数据量足够大,noise的影响会被“冲淡”,对模型几乎不影响。
2.batch的选择,首先决定的是下降方向,如果数据集比较小,则完全可以采用全数据集的形式。这样做的好处有两点,

1)全数据集的方向能够更好的代表样本总体,确定其极值所在。
2)由于不同权重的梯度值差别巨大,因此选取一个全局的学习率很困难。

batch size设置技巧相关推荐

  1. batch size设置

    参考  batch size设置 - 云+社区 - 腾讯云 深度学习中经常看到epoch. iteration和batchsize,下面按自己的理解说说这三个的区别: (1)batchsize:批大小 ...

  2. batch size的作用及如何设置

    Batch 的选择,首先决定的是下降的方向.那么越准确的数据量,决定的梯度下降的方向就越准确,对于小的数据集来说,batch size可以选择全部数据集大小,但是对于大的数据集来说,如果batch s ...

  3. Batch Size理解

    目录 1.直观的理解: 2.为什么要提出Batch Size? 3.既然 Full Batch Learning 并不适用大数据集,那么走向另一个极端怎么样? 3.Batch Size设置合适时的优点 ...

  4. 神经网络中Batch Size的理解

    神经网络中Batch Size的理解 直观的理解: Batch Size定义:一次训练所选取的样本数. Batch Size的大小影响模型的优化程度和速度.同时其直接影响到GPU内存的使用情况,假如你 ...

  5. 打破Batch Size的玄学!batch size 的设置范围,不必那么拘谨!

    作者丨机器之心 来源丨机器之心 [导读]GPU 对 2 的幂次的 batch 可以发挥更好性能?今天来打破这个认知!著名机器学习博主用理论推导和实验结果证明:选择批大小作为 2 的幂或 8 的倍数在实 ...

  6. 浅析深度学习中Batch Size大小对训练过程的影响

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨陈志远@知乎(已授权) 来源丨https://zhuanlan ...

  7. Batch Size对神经网络训练的影响

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨Daryl Chang 来源丨CV技术指南 编辑丨极市平台 导 ...

  8. batch size 训练时间_深度学习 | Batch Size大小对训练过程的影响

    转自:面试中问你 Batch Size大小对训练过程的影响​mp.weixin.qq.com 先看两个问题: (1)深度学习中batch size的大小对训练过程的影响是什么样的? (2)有些时候不可 ...

  9. 深度学习中的batch理解(batch size 一次喂给神经网络的数据大小量)

    本文引用自:训练神经网络时如何确定batch size? 文章目录 前言 回顾 Batch Size Which one? 前言 当我们要训练一个已经写好的神经网络时,我们就要直面诸多的超参数了.这些 ...

  10. 训练神经网络时如何确定batch size?

    前言 当我们要训练一个已经写好的神经网络时,我们就要直面诸多的超参数了.这些超参数一旦选不好,那么很有可能让神经网络跑的还不如感知机.因此在面对神经网络这种容量很大的model前,是很有必要深刻的理解 ...

最新文章

  1. 前端之路从零开始——第二周第四天笔记(background)
  2. MATLAB从入门到精通系列之如何在MATLAB中导入excel单sheet页及多sheet页表格
  3. 神策专访丨摩天轮票务陈校校:在线票务平台精准营销之道
  4. boost::process::environment相关的测试程序
  5. 打破软件自动化测试的格局
  6. Reading papers_6(Pattern Recognition And Machine Learning一书,ing...)
  7. PaddleDetection的学习笔记
  8. linux和windows下TIME_WAIT过多的解决办法
  9. 实战爬虫:python爬虫之爬取虎扑湖人专区新闻中科比相关新闻
  10. 为什么我的devc 调试不了c 语言,devc++为什么调试不了,求大神帮看看!
  11. Head First Java ——我的Java入门书
  12. 基于SAP HANA 的SAP系统 安装
  13. 解决方法-SQLserver建表后更改列,显示不允许保存更改。您所做的更改要求删除并重新创建以下表
  14. froala富文本编辑器与golang、beego,脱离ueditor苦海
  15. STM32-红外遥控
  16. OSChina 周六乱弹 —— 快上车,司机调休了
  17. 微信订阅号如何快速涨粉
  18. 项目管理 | 怎么开项目启动会?
  19. 国际短信发不出去是怎么回事?
  20. 简述防火墙--未知危险的屏障

热门文章

  1. win10除去桌面图标小箭头(绝对没有坑!!!)与 该文件没有与之关联的程序来执行该操作。。。
  2. 支付宝对账单功能开发
  3. psd转html的素材,Ai2Psd:一键ai转psd格式脚本
  4. “带花树开花”算法来解非二分图的最大匹配
  5. STM32中 利用PWM控制步进电机,ARR与PSC值的设定
  6. 微信的“QQ邮箱提醒”接收发往网易163邮件
  7. Less系列之混合(Mixins)
  8. java halt_Java Runtime halt()方法
  9. 用java编写人民币转化为美元_js实现数字转人民币、美元的大写汉字
  10. 445端口是什么,怎么关闭?