谈谈batchsize参数
来源:互联网 发布:空知猩猩讨厌中国 编辑:程序博客网 时间:2024/05/23 12:44
1.当数据量足够大的时候可以适当的减小batch_size,由于数据量太大,内存不够。但盲目减少会导致无法收敛,batch_size=1时为在线学习,也是标准的SGD,这样学习,如果数据量不大,noise数据存在时,模型容易被noise带偏,如果数据量足够大,noise的影响会被“冲淡”,对模型几乎不影响。
2.batch的选择,首先决定的是下降方向,如果数据集比较小,则完全可以采用全数据集的形式。这样做的好处有两点,1)全数据集的方向能够更好的代表样本总体,确定其极值所在。
2)由于不同权重的梯度值差别巨大,因此选取一个全局的学习率很困难。
3.增大batchsize的好处有三点:
1)内存的利用率提高了,大矩阵乘法的并行化效率提高。
2)跑完一次epoch(全数据集)所需迭代次数减少,对于相同的数据量的处理速度进一步加快。
3)一定范围内,batchsize越大,其确定的下降方向就越准,引起训练震荡越小。
4.盲目增大的坏处有三点:
1)当数据集太大时,内存撑不住。
2)跑完一次epocffe-master/tools/extra/parse_log.sh caffe-master/tools/extra/extract_seconds.py和h(全数据集)所需迭代次数减少了,但要想达到相同的 精度,时间开销太大,参数的修正更加缓慢。3)batchsize增大到一定的程度,其确定的下降方向已经基本不再变化。
总结:
1)batch数太小,而类别又比较多的时候,真的可能会导致loss函数震荡而不收敛,尤其是在你的网络比较复杂的时候。
2)随着batchsize增大,处理相同的数据量的速度越快。
3)随着batchsize增大,达到相同精度所需要的epoch数量越来越多。
4)由于上述两种因素的矛盾, Batch_Size 增大到某个时候,达到时间上的最优。
5)由于最终收敛精度会陷入不同的局部极值,因此 Batch_Size 增大到某些时候,达到最终收敛精度上的最优。
6)过大的batchsize的结果是网络很容易收敛到一些不好的局部最优点。同样太小的batch也存在一些问题,比如训练速度很慢,训练不容易收敛等。
7)具体的batch size的选取和训练集的样本数目相关。还有一个代码上的细节:就是代码实现上选取一个batch的时候似乎是按着数据库的图片顺序选取输入图片的,所以在生成数据库的时候切记要shuffle一下图片顺序。caffe中ImageDataLayer有shuffle参数,生成lmdb时也有shuffle参数不必手动。
- 谈谈batchsize参数
- caffe学习笔记19-batchsize参数
- caffe学习笔记19-batchsize参数
- caffe学习笔记19-batchsize参数
- 论述flume中batchSize,capacity,transactionCapacity参数之间的关系
- 深度学习常见参数epoch、 iteration和batchsize的区别
- 谈谈ORACLE内核参数
- 关于 epoch、 iteration和batchsize ,关于batchsize
- 谈谈java的命令行参数
- 谈谈java虚拟机中的参数。
- epoch、 iteration和batchsize
- epoch、 iteration和batchsize
- epoch、 iteration和batchsize
- 谈谈Python函数的默认参数
- 谈谈python中函数的参数
- 关于 epoch、 iteration和batchsize
- epoch,batchsize,iter的理解
- 关于 epoch、 iteration和batchsize
- HTML5照片和视频的隐藏和显示
- yii2框架的详细介绍
- RTSP协议学习
- TensorFlow拟合曲线
- 使用sonarqube5.6.7集成maven的时候遇到的问题
- 谈谈batchsize参数
- opencv捕捉摄像头
- 自定义函数导致的sql性能问题
- 程序员,该如何避免成为一个“油腻的怪物”
- VScode 无法创建文件或者无法保存文件
- The “no-free-lunch” theorems
- 又双叒叕。。。。。。。nmb
- JavaScript开发人员必知的10个关键习惯
- 太阳高度与方向