batch size的作用及如何设置

Batch 的选择,首先决定的是下降的方向。那么越准确的数据量,决定的梯度下降的方向就越准确,对于小的数据集来说,batch size可以选择全部数据集大小,但是对于大的数据集来说,如果batch size选择的过大,将导致运行内存不足,无法训练下去等问题。对于在线学习的数据集,我们把batch size设置为1。

Batch_size不宜选的太小,太小了容易修正方向导致不收敛,或者需要经过很大的epoch才能收敛;也没必要选的太大,太大的话首先显存受不了,其次可能会因为迭代次数的减少而造成参数修正变的缓慢。如果数据集足够充分,那么用一半(甚至少得多)的数据训练算出来的梯度与用全部数据训练出来的梯度是几乎一样的。

在一定范围内增大Batch_size有哪些好处呢?

1、 提高了内存的利用率,大矩阵乘法的并行化效率提高
2、 运行一次epoch所需要的迭代次数减少,相同数据量的数据处理速度加快。
3、 Batch_size越大下降方向越准,引起的训练震荡越小。

但是容易造成内存溢出、训练时间增加、收敛缓慢、局部最优,泛化性差等问题

Batch_size对训练效果有何影响?

1.如果Batch_Size 太小,算法将在相当多的epoch内不收敛。

2.随着 Batch_Size 增大,处理相同数据量的速度越快。达到相同精度所需要的 epoch 数量越来越多。

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

问题1、batchsize已经取了很小了但是仍然出现训练困难,内存不够的问题,主要有以下几种原因:

1、模型太过复杂,复杂的模型容易占用大量的内存。

2、使用nvida-smi命令来查看是否有其他占用内存的程序在运行。

3、train和test的batchsize都要改成一致的。

4、图片太大,导致无法训练下去。

 

  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序小K

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值