关于 epoch、 iteration和batchsize ,关于batchsize

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

(2)iteration:1个iteration等于使用batchsize个样本训练一次;

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


举个例子,训练集有1000个样本,batchsize=10,那么:

训练完整个样本集需要:

100次iteration,1次epoch。


关于batchsize

1.当数据量足够大的时候可以适当的减小batchsize,由于数据量太大,内存不够。但盲目减小会导致无法收敛,batchsize=1时为在线学习。

2.batch的选择,首先决定的是下降方向,如果数据集比较小,则完全可以采用全数据集的形式。这样好处有两点,(1)全数据集的方向能够更好的代表样本总体,确定其极值所在;(2)由于不同权重的梯度值差别巨大,因此选取一个全局的学习率很困难。

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

4.盲目增大的坏处有三点:(1)当数据集太大时,内存撑不住。(2)跑完一次epocffe-master/tools/extra/prase_log.sh  caffe-master/tools/extra/extract_seconds.py和h(全数据集)所需迭代次数减少了,但要想达到相同的精度,时间开销太大,参数的修正更加缓慢。(3)batchsize增大到一定的程度,其确定的下降方向已经基本不再变化。

总结:

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

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

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

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

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

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

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

还有一个代码上的细节,就是caffe的代码实现上选取一个batch的时候似乎是按着数据库的图片顺序选取输入图片的,所以在生成数据库的时候切记要shuffle一下图片数学。caffeine中ImageDataLayer有shuffle参数,生成lmdb时也有shuffle参数不必手动。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值