Tensorflow架构和Caffe架构中epoch、 iteration&iter_size和batchsize&batch_size的区别和联系

本文深入解析了TensorFlow和Caffe中关键训练参数的概念,包括batchsize、iteration、epoch在TensorFlow架构中的作用,以及batch_size、sub_batch_size、iter_size在Caffe架构中的重要性,帮助读者理解如何正确设置这些参数以优化模型训练。

    首先给大家科普一下这几个关键的定义,不准确的地方请大家多多指正.

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值