首先给大家科普一下这几个关键的定义,不准确的地方请大家多多指正.
Tensorflow架构:
(1)batchsize:批大小,也就是在一次模型迭代/训练过程中所使用的样本数目;
(2)iteration:1个iteration等于使用batchsize个样本训练一次;
(3)epoch:1个epoch等于使用训练集中的全部样本训练一次;也就是训练整个数据集的重复数。
举个例子,训练集有1000个样本,batchsize=10,那么:训练完整个样本集需要:100次iteration,1次epoch.
Caffe架构:
iter_size是caffe的solver.prototxt中的一个重要参数,很多人在用caffe训练模型的时候,只关注到了网络中定义的batch_size, 却不知iter_size和batch_size有着很大的联系。下面,我将从两方面对此进行解释。
(1)batch_size: 指的是网络在训练过程中,经过多少数据更新一次权重,或者说经过多少数据优化一次网络。而将batch_size个数据构成的输入称为batch(或mini-batch)
(2)sub_batch_size: 指的是caffe在定义model.prototxt时设定的batch_size,这里我们为了上面提到的mini-batch做区分,所以将由sub_batch_size个数据构成的输入称为sub_batch
(3)iter_size: 指的是一个batch(mini-batch)包含的sub_batch的数量
caffe在前向和反向的过程中是以sub_batch为单位的,而在优化过程中则是以batch(min-batch)为单位的。
首先,一个sub_batch的数据前向通过网络,计算损失,再通过反向传播,计算损失对各权重的梯度。虽然在这个过程中要进行反向传播,但参数不进行优化。然后,将下一个sub_batch的数据也按照上面的方式,前向反向计算,直到iter_size个sub_batch都完成了上面的过程。最后,当一个batch的数据都前反向计算后,准备进行优化。对于网络中的每一个要学习的参数,将每个sub_batch反向时对其计算的梯度进行累加,并除以iter_size,作为最终的梯度来更新该参数。
重新定义,我们可以近一步说明三者的关系为:
batch_size = iter_size * sub_batch_size
关于参数的使用和说明, batch size 需要调参, 可以确定的是,batch size 绝非越大越好。
参考文献:
1:https://blog.csdn.net/LUFANGBO/article/details/79308327
2: https://zhuanlan.zhihu.com/p/43700021
本文深入解析了TensorFlow和Caffe中关键训练参数的概念,包括batchsize、iteration、epoch在TensorFlow架构中的作用,以及batch_size、sub_batch_size、iter_size在Caffe架构中的重要性,帮助读者理解如何正确设置这些参数以优化模型训练。

362

被折叠的 条评论
为什么被折叠?



