有一天,师姐问我,epoch和iteration有什么区别?我一时语塞,竟然遍寻百度而不得,最后在stackoverflow上找到一个我认为比较靠谱的答案,虽然它不是最高票,但是是最好理解的,深得我心。原答案在此: 
http://stackoverflow.com/questions/4752626/epoch-vs-iteration-when-training-neural-networks 
简单起见,我用自己的语言描述一下: 
epoch——使用整个训练样本集传播一次,一次传播 = 一次前向传播 + 一次后向传播。但是考虑到内存不够用的问题,训练样本们往往并不是全都一起拿到内存中去训练,而是一次拿一个batch去训练,一个batch包含的样本数称为batch size。 
iteration——使用batch size个样本传播一次。同样,一次传播=一次前向传播+一次后向传播。

eg. 我们有1000个训练样本,batch size为100,那么完成一次epoch就需要10个iteration。

先上一张图,大家很熟悉的一张图。

首先说明一个概念:在caffe中的一次迭代iterration指的是一个batch,而不是一张图片。下面就主要说下2个概念

test_iter: 在测试的时候,需要迭代的次数,即test_iter* batchsize(测试集的)=测试集的大小,测试集batchsize可以在prototx文件里设置

test_interval:interval是区间的意思,所有该参数表示:训练的时候,每迭代500次就进行一次测试。

caffe在训练的过程是边训练边测试的。训练过程中每500次迭代(也就是32000个训练样本参与了计算,batchsize为64),计算一次测试误差。计算一次测试误差就需要包含所有的测试图片(这里为10000),这样可以认为在一个epoch里,训练集中的所有样本都遍历以一遍,但测试集的所有样本至少要遍历一次,至于具体要多少次,也许不是整数次,这就要看代码,大致了解下这个过程就可以了。

Caffe提供的示例中,通常有三个文件,solver.prototxt,train_val.prototxt以及deploy.prototxt。从名字也可以知道,solver.prototxt设置求解参数,用于设置训练时的一些全局参数。train_val.prototxt为网络配置文件,是用来训练网络的。deploy.prototxt是用来进行预测的。这两者差别在于deploy.prototxt没有数据层,但是指定了输入的数据形状。
    那当我们训练好了一个模型之后,怎么用train_val.prototxt生成deploy.prototxt呢?如下:
    1. 删除数据层(datalayer),插入数据维度描述
    2.删除损失层(loss)和精度层(accuracy),插入概率层(prob)。
    当然,数据如果训练时数据层涉及到预处理,可以保留对应的预处理层或者直接对图像进行预处理,再输入到网络(一般用这种方法)

 
 

caffe的一些概念理解的更多相关文章

  1. 大数据核心知识点:Hbase、Spark、Hive、MapReduce概念理解,特点及机制

    今天,上海尚学堂大数据培训班毕业的一位学生去参加易普软件公司面试,应聘的职位是大数据开发.面试官问了他10个问题,主要集中在Hbase.Spark.Hive和MapReduce上,基础概念.特点.应用 ...

  2. SpringIOC的概念理解、构造器注入、setter注入、p命名空间注入、IOC容器介绍与比较

    1.IOC概念理解 IOC(Inversion of Control)即“控制反转”,不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象 ...

  3. Kubernetes重要概念理解

    Kubernetes重要概念理解 kubernetes是目前最主流的容器编排工具,是下一代分布式架构的王者.2018年的kubernetes第一个版本1.10已经发布.下面整理一下,kubernete ...

  4. SNF快速开发平台2019-角色、权限、账户的概念理解-非常全的理论讲解权限控制

    组织模型   资源模型  操作模型 谁能够执行哪些操作    执行资源的范围 资源概念资源就是想要的到的最终物质,我们可以给每一个资源定义一个权限,也可以给某一类资源定义一个权限 权限概念权限是对资源 ...

  5. elasticsearch基本概念理解+elasticsearch 的shards unassigned处理方法 -- 最佳运维实践 - 集群规划

    1.es与MySQL的概念对比 2.概念理解 2.1 Index : 一个索引即是文档的集合 2.2 Document : 一个文档即是一个可被索引的基础单元信息,一条记录: 2.3 Replicas ...

  6. fragment概念理解

    fragment概念理解知识,fragment概念理解图片 fragment概念理解内容,fragment概念理介绍,fragment概念理正文 Fragment是Android honeycomb ...

  7. ubuntn系统下将文件拷贝到优盘中及挂载概念理解

    参考资料:http://jingyan.baidu.com/article/7082dc1c76f178e40a89bdd3.html: http://bbs.csdn.net/topics/3801 ...

  8. Ceph 概念理解

    简介 Ceph是一个可靠地.自动重均衡.自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储.块设备存储和文件系统服务. 在虚拟化领域里,比较常用到的是Ceph的块设备存储, ...

  9. JavaScript的作用域和块级作用域概念理解

    作用域 作用域永远都是任何一门编程语言中的重中之重,因为它控制着变量与参数的可见性与生命周期.说到这里我们需要理解两个概念:块级作用域与函数作用域. 函数作用域 这个应该好理解,函数作用域就是说定义在 ...

随机推荐

  1. myeclipse新建maven项目

    右键 new--->project   ---->maven project 出现bank 右键点击bank---->maven4Myeclipse---->new maven ...

  2. Java创建WebService

    从java 6之后就提供了简单快速的创建WebService的方法,这里将这种简单的方法记录下来方便以后回看.第一步:首先创建一个java Project,然后创建一个类HelloWorldImpl如 ...

  3. 雷林鹏分享:jQuery EasyUI 树形菜单 - 树形网格惰性加载节点

    jQuery EasyUI 树形菜单 - 树形网格惰性加载节点 有时我们已经得到充分的分层树形网格(TreeGrid)的数据. 我们还想让树形网格(TreeGrid)按层次惰性加载节点. 首先,只加载 ...

  4. 转录调控实战 | 一文解决转录调控问题 | chIP-seq | ATAC-seq

    做生物的想发文章怎么办?转录调控来解析(huyou)! 最简单的情形: 1. 我在研究一个非常重要的基因A,功能已经做得差不多了,现在想深挖,第一步就是想知道哪个转录因子调控这个基因A: 2. 我发现 ...

  5. Python操作MySql --Python3

    Python版本:v3.7 模块:pymysql 1.连接数据库 connectDB.py: # coding:utf-8import pymysql host = 'localhost' # 主机u ...

  6. WCF利用Stream上传大文件

    WCF利用Stream上传大文件 转自别人的文章,学习这个例子,基本上wcf也算入门了,接口用法.系统配置都有了 本文展示了在asp.net中利用wcf的stream方式传输大文件,解决了大文件上传问 ...

  7. 浅谈微服务架构、容器技术与K8S

    关注嘉为科技,获取运维新知 企业应用系统:从单体应用走向微服务架构:从裸金属走向容器. 如果在诸多热门云计算技术诸如容器.微服务.DevOps.OpenStack等之中,找出一个最火的方向,那么可能非 ...

  8. 轮播,试用与微信公众号,apicloud苹果安卓

    <head> <script type="text/javascript" src="script/jquery.min.js">< ...

  9. 安装redisPHP扩展

    1. "predis/predis":"~1.1@dev" 2.composer update 即可,这是给项目添加redis扩展 启动服务端 redis-se ...

  10. linux安装curl扩展

    1.获得安装包,从网上直接下载或者其他途径,这里直接wget wget http://curl.haxx.se/download/curl-7.20.0.tar.gz 2.解压到当前目录(或者 htt ...