zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    java.lang.OutOfMemoryError:GC overhead limit exceeded填坑心得
    linux修改系统时间和linux查看时区、修改时区的方法
    关于elasticsearch和kibana的时区和日期问题
    Jmeter中的几个重要测试指标释义
    jmeter之json数据参数化 断言等
    daemon
    linux之cp/scp命令+scp命令详解
    C语言中文件的读取和写入
    koa 项目实战(四)注册接口和调试工具(postman)
    koa 项目实战(三)创建测试接口和用户模型
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/7051032.html
Copyright © 2011-2022 走看看