batch_size设置的技巧 以及 batch_size的介绍

1、当数据量足够大的时候可以适当的减小batch_size,这么做是由于数据量太大,内存不够。但盲目减少batch_size会导致无法收敛,batch_size=1时为在线学习,也是标准的SGD,这样学习,如果数据量不大,噪声数据存在时,模型容易被噪声带偏,如果数据量足够大,噪声的影响会被“冲淡”,对模型几乎不影响。
2、batch的选择,首先决定的是下降方向,如果数据集比较小,则完全可以采用全数据集的形式。这样做的好处有两点:
① 全数据集的方向能够更好的代表样本总体,确定其极值所在。
② 由于不同权重的梯度值差别巨大,因此选取一个全局的学习率很困难。

3、增大batchsize的好处有三点:

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

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

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


增大batch size能减缓梯度震荡,需要更少的迭代优化次数,收敛的更快,但是每次迭代耗时更长。
然鹅,盲目增大batch_size的坏处有三点:

     1)当数据集太大时,内存撑不住。
    
     2)跑完一次全数据集所需迭代次数减少了,但要想达到相同的精度,时间开销太大,参数的修正更加缓慢。

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

总结:
batch的size设置的不能太大也不能太小,因此实际工程中最常用的就是mini-batch,一般size设置为几十或者几百。
GPU对2的幂次的batch可以发挥更佳的性能,因此设置成16、32、64、128…时往往要比设置为整10、整100的倍数时表现更优

补充 batch_size 、epoch 、iteration之间的关系
深度学习中经常看到epoch、 iteration和batchsize,下面按自己的理解说说这三个的区别:

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

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

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值