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),但测试时设置的参数最好要能整除(测试网络时正好遍历完所有测试样本是最理想的情况)。

测试的时候,test_batch_size×test_iterations​>number of test images也不会出错,甚至这样做也可以(这种情况下已经测试过的图像会组成新的batch重复测试),不过设置参数时最好还是test_batch_size×test_iterations​=number of test images。

 

在caffe中很多预训练好的模型的iteration都是40000,fast_rcnn那个代码也是40000

posted @ 2017-06-19 22:58  有梦就要去实现他  阅读(3594)  评论(0编辑  收藏  举报