深度学习 batch_size

1. batch_size、iteration、epoch简介

batch_size:每批数据量的大小。深度学习通常用SGD的优化算法进行训练,也就是一次(1 个iteration)一起训练batch_size个样本,计算它们的平均损失函数值,来更新参数。

iteration:1个iteration即迭代一次,也就是用batchsize个样本训练一次。

epoch:1个epoch指用训练集中的全部样本训练一次,此时相当于batchsize 等于训练集的样本数。

2.batch_size

定义:一次性读入多少批量的图片。

batch_size=数据集大小,适用于小数据集。batch_size= N(自己设定),适用于大数据集。batch_size=1,在线学习。

在合理范围内,增大 batch_size 有何好处?

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

跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。

在一定范围内,一般来说 batch_size 越大,其确定的下降方向越准,引起训练震荡越小。

盲目增大 batch_size 有何坏处?

内存利用率提高了,但是内存容量可能撑不住了。

跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。

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

总结:

首先根据显存大小选择batch_size;其次根据自己的实际情况调整batch_size,调参重在“调”,根据实际情况选择合适的参数。大数据集中batch_size 32 至 256 是不错的初始值选择,尤其是 64 和 128,选择2的指数倍的原因是:计算机内存一般为 2 的指数倍,采用 2 进制编码。设置好batch_size后,每一次epoch记得shuffle一次,不要让网络通过相同的minibach。

猜你喜欢

转载自blog.csdn.net/weixin_40277254/article/details/85781494