(1)batch:将数据集分成几个 batch,每一个batch数据的数量就是[batch size],在一个 epoch 中,batch 数和迭代数是相等的。
(2)batch size:批大小。一个 batch 中样本总数。在DeepLearning中,一般采用SGD训练,即每次训练在训练集中取batch size个样本训练;
(3)iteration:1个iteration等于使用batch size个样本训练一次;
(4)epoch:1个epoch等于使用训练集中的全部样本训练一次;
举个例子,训练集有1000个样本,batch size=10,那么训练完整个样本集需要:100次iteration,1次epoch。
example1:举个粒子,训练集有10582个样本,batch size=8,那么训练完整个样本集需要:10582/8=1322次iteration,一次epoch。
如下图,每一次的iteration送进去8张图片训练。
example2:举个粒子,训练集合有422个样本,batch size=2,那么训练完整个样本集需要:422/2=211次iteration,一次epoch。
如下图,每一次iteration送进去2张图片训练。(我这里是设置了每5次iteration打印一次loss,所以每显示211。)
batch的思想,至少有两个作用,一是更好的处理非凸的损失函数,非凸的情况下, 全样本就算工程上算的动, 也会卡在局部优上, 批表示了全样本的部分抽样实现, 相当于人为引入修正梯度上的采样噪声,使“一路不通找别路”更有可能搜索最优值;二是合理利用内存容量。
GPU对2的幂次的batch可以发挥更佳的性能,因此设置成16、32、64、128…时往往要比设置为整10、整100的倍数时表现更优
————————————————
原文链接:https://blog.csdn.net/suoyan1539/article/details/79583867