深度学习中的batch_size、iteration、epoch概念
个人浅薄的理解,如有错误,欢迎评论指点。
训练模型时,如果数据较多,无法一次性将所有数据送入计算,就会遇到epoch,batch_size,iterations这些概念。
epoch:
一个epoch是所有的数据送入网络中完成一次前向计算及反向传播的过程。由于数据量大,所以就会把epoch分成小的batch。而训练时把所有的数据跑一次是不够的,因此又会有多个epoch。
batch_size:
batch是每次送入网络中训练的一部分数据,而batch_size就是每个batch中训练样本的数量。batch肯定不是所有训练数据,而是一小部分数据。为了在内存效率和内存容量之间寻求最佳平衡,batch_size应该精心设置,从而最优化网络模型的性能及速度。
注意,batch_size和batch_numbers不是一回事。
iterations:
每跑完一次bach,就是完成了一次iteration。而iterations就是完成一次epoch所需的batch个数。batch_numbers就是iterations。
举个栗子:
我们有1000个数据要传入nn,把这些数据分成10份,每份100个,batch=10,batch_size=100,要完成一次epoch,就要进行10次iterations。
转载网上的一个现实中的例子,比如田径跑步。
一次只能8个人一起跑,这就是模型的批数量,也就是说batch_size=8;开始跑步,也就是说进行模型的前向传播,跑步到终点,一次迭代完成,这整个的一次过程称为模型的一次迭代,一个iter;剩下的选手继续跑,也就是下一次迭代;所有选手跑完就是一个epoch。