深度学习基础笔记——Batch_Size

相关申明及相关参考:

体系学习地址 主要学习笔记地址

由于是文章阅读整合,依据个人情况标注排版,

不确定算不算转载,主要学习围绕AI浩的五万字总结,深度学习基础
如有侵权,请联系删除。


目录

1 Batch_Size概念

2 Batch_Size作用

3 Batch_Size相关设置

A 在合理范围内,增大Batch_Size好处

B 盲目增大Batch_Size缺点

C 调节Batch_Size对训练效果的影响 


1 Batch_Size概念

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的倍数时表现更优
  9. 在设置BatchSize的时候,首先选择大点的Batch_size把GPU占满,观察Loss收敛的情况,如果不收敛,或者收敛效果不好则降低Batch_size,一般常用16,32,64等。
     

A 在合理范围内,增大Batch_Size好处

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

B 盲目增大Batch_Size缺点

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

C 调节Batch_Size对训练效果的影响 

  • Batch_Size 太小,模型表现效果极其糟糕(error飙升)。
  • 随着 Batch_Size 增大,处理相同数据量的速度越快。
  • 随着 Batch_Size 增大,达到相同精度所需要的 epoch 数量越来越多。
  • 由于上述两种因素的矛盾, Batch_Size 增大到某个时候,达到时间上的最优。
  • 由于最终收敛精度会陷入不同的局部极值,因此 Batch_Size 增大到某些时候,达到最终收敛精度上的最优。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度学习中的batch_size是指在训练过程中每次选择的批量数据的大小。在实际工程中,通常使用mini-batch,其大小一般设置为几十或者几百。这样的设置在平衡计算效率和模型性能之间起到了较好的作用。 对于二阶优化算法,减小batch_size可以提高收敛速度,但是带来的性能提升远不如引入大量噪声导致的性能下降。因此,在使用二阶优化算法时,往往需要采用较大的batch_size,可以设置成几千甚至一两万才能发挥最佳性能。 当设置较大的batch_size时,一般需要增大学习率,以保持原始数据的梯度方差。但是学习率的增大不是一开始就设置很大,而是在训练过程中逐渐增大。这样可以有效地平衡模型的收敛速度和性能。 总之,设置深度学习batch_size时需要考虑计算效率、模型性能以及优化算法等因素,并根据实际情况进行调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [CNN基础——如何设置BatchSize](https://blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/116743362)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值