epoch,iteration,batch,batch_size

epoch,iteration,batch,batch_size

epoch:训练时,所有训练图像通过网络训练一次​(次前向传播+次后向传播);测试时,所有测试图像通过网络一次​(一次前向传播)。Caffe不用这个参数。

batch_size:1个batch包含的图像数目,通常设为2的n次幂,常用的包括64,128,256。                        网络较小时选用256,较大时选用64。

iteration​:训练时,1个batch训练图像通过网络训练一次​(一次前向传播+一次后向传播),每迭代一次权重更新一次;测试时,1个batch测试图像通过网络一次​(一次前向传播)。

三者之间的关系:iterations = epochs×(images / batch_size)​,所以1个epoch包含的                              iteration次数=样本数量/batch_size;

以Caffe的mnist​为例(具体参数见相应的prototxt文件):

training_images=60k,batch_size=64, maximum_iterations= 10k​,test _images=10k,batch_size=100, test_iterations=100:

在这个参数设置下,训练时经历了10.6个epoch,测试时100次iteration(1个epoch)恰好可以遍历整个测试集。

注意:上面例子中如果训练时maximum_iterations= 10k,那么将会有10k×64=640k幅图像参与训练,乍一看这个是错的,因为640k远远大于训练集60k。事实上这是没问题的,当剩余的训练样本不够一个batch时,Caffe会带着这些剩余的样本然后重头开始再取一个batch。所以在设置Training和Testing的参数时需要注意,训练的某些参数可以不整除(比如10.6个epoch),但测试时设置的参数最好要能整除(测试网络时正好遍历完所有测试样本是最理想的情况)。

猜你喜欢

转载自blog.csdn.net/jacke121/article/details/80745637