Caffe样例中mnist的文件之间逻辑分析
约定一下,Caffe运行样例时在终端中使用的所有命令,同时终端中的目录已经cd到Caffe之中(别告诉我一个Github项目你还没有make all就直接拿过来用了)
sudo sh data/mnist/get_mnist.sh #联网获取minst数据库
sudo sh examples/mnist/create_mnist.sh #将数据转化成lmdb数据,lmdb就是一个有些类似SQL之类的东东
sudo vi examples/mnist/lenet_solver.prototxt #非必须,主要用于设置修改一些运行参数(修改后记得保存,怎么修改不在本文范围之内,姑且不提),也可将vi改成vim、gedit其他文本编辑器
sudo time sh examples/mnist/train_lenet.sh#运行程序
以上命令是从网站直接复制过来的[1](当然我已经实验过了)为了方便说明我打算从这些命令倒序跟各位分析一下文件之间的逻辑关系。
1、train_lenet.sh:老子要运行了~~~
sudo time sh examples/mnist/train_lenet.sh
打开train_lenet.sh,我们发现里面的代码十分的短小,有价值的就一句话:
./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt $@
详细解释一下,solver参数是表示指定运行参数的程序,也就是说这次训练的运行参数(比如用CPU还是GPU运行程序,网络框架设置是在哪个程序,多少次迭代后显示一次结果等)都写在这个文件里面了,那么这个.prototxt文件就是这次任务的solver。
这个时候你突然觉得.prototxt怎么这么眼熟,其实,你看第三句不就写有lenet_solver.prototxt嘛!
2、lenet_solver.prototxt:老子跟你解释三大哲学问题:网络是谁、从哪来、到哪去。
贴出此文件中跟文件有关的相关命令
net: "examples/mnist/lenet_train_test.prototxt"
snapshot: 5000
snapshot_prefix: "examples/mnist/lenet"
(二三句的用途简单的说类似于断点续传,每 5000 iterations就可以得到model_iter_xxx.caffemodel 和model_iter_xxx.solverstate,所以我们姑且不详细描述)
lenet_solver.prototxt作为一个solver配置文件,整个项目的核心,甚至可以当作主程序也不为过,其他的只是说算是解决的问题之一就是确定了训练网络的文件路径(径……我没写错别字吧)
3、lenet_train_test.prototxt
到了这里已经到了文件逻辑的末尾,如果熟悉json的话阅读起来会十分容易,里面都是字典,要么就是字典嵌套着字典,就像这样
layer{
xx:xx
xx{
xxx:xx
}
}
在这里面依然可以发现一些文件路径,其实这些路径都是lmdb的数据路径,包括测试集的文件路径和训练集的文件路径。到此终端中运行的所有命令已从最后一句倒叙到第一句。
4、总结
整个项目,文件之间的调用是单向向前的,并没看到你调用我我调用你样、甚至搞个大循环(1s)的情况(其实作为优秀的架构来讲也不应该这样)即
Created with Raphaël 2.1.0
开始
lmdb数据文件
lenet_train_test.prototxt:网络框架
lenet_solver.prototxt:solver配置
train_lenet.sh:运行项目
结束
刚接触Caffe时我一直弄不清楚如何Caffe的使用的正确方式,找过的blog内容很详细但是让人在整个框架上就感觉十分的松散。本文试图从文件之间是如何调用来给大家浅尝Caffe框架里隐含的逻辑与思想。
Caffe样例中mnist的文件之间逻辑分析的更多相关文章
- java 线程 原子类相关操作演示样例 thinking in java4 文件夹21.3.4
java 线程 原子类相关操作演示样例 package org.rui.thread.volatiles; import java.util.Timer; import java.util.Time ...
- Relation Extraction中SVM分类样例unbalance data问题解决 -松弛变量与惩罚因子
转载自:http://blog.csdn.net/yangliuy/article/details/8152390 1.问题描述 做关系抽取就是要从产品评论中抽取出描述产品特征项的target短语以及 ...
- 请编写一个方法,返回某集合的所有非空子集。 给定一个int数组A和数组的大小int n,请返回A的所有非空子集。保证A的元素个数小于等于20,且元素互异。各子集内部从大到小排序,子集之间字典逆序排序,见样例。
题解:观察测试样例,会发现每个子集的选择规律与二进制((2^n) - 1)到 1 的顺序生成的规律是一致的,样例中n=3,2^n-1=7,用二进制表示为111,其中每一位的1表示数组中的三个数都选择. ...
- jbpm入门样例
1. jBPM的简介 jBPM是JBOSS下的一个开源java工作流项目,该项目提供eclipse插件,基于Hibernate实现数据持久化存储. 參考 http://www.jbos ...
- 浅谈hadoop中mapreduce的文件分发
近期在做数据分析的时候.须要在mapreduce中调用c语言写的接口.此时就须要把动态链接库so文件分发到hadoop的各个节点上,原来想自己来做这个分发,大概过程就是把so文件放在hdfs上面,然后 ...
- WebGL自学教程——WebGL演示样例:開始
最终開始WebGL的演示样例了,...... 開始 使用WebGL的步骤,非常easy: 1. 获得WebGL的渲染环境(也叫渲染上下文). 2. 发挥你的想象力,利用<WebGL參考手冊> ...
- 最简单的视音频播放演示样例3:Direct3D播放YUV,RGB(通过Surface)
===================================================== 最简单的视音频播放演示样例系列文章列表: 最简单的视音频播放演示样例1:总述 最简单的视音频 ...
- HBase总结(十一)hbase Java API 介绍及使用演示样例
几个相关类与HBase数据模型之间的相应关系 java类 HBase数据模型 HBaseAdmin 数据库(DataBase) HBaseConfiguration HTable 表(Table) H ...
- Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求)
Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求) 本篇博客介绍Cocos2d-x 3.2Lua演示样例中的XMLHttpRequestTes ...
- obj-c编程15[Cocoa实例03]:MVC以及归档化演示样例
前面的博文里介绍了归档和解档,这里我们把它实际应用到一个简单的代码中去,将它作为一个多文档应用程序的打开和保存的背后支持.另外这里介绍一下MVC思想,这个在不论什么语言里都会有,它是一种设计思想,主要 ...
随机推荐
- WPF 自定义控件入门 Focusable 与焦点
自定义控件时,如果自定义的控件需要用来接收键盘消息或者是输入法的输入内容,那就需要关注到控件的焦点 默认情况下的自定义控件是没有带可获取焦点的功能的,例如编写一个继承 FrameworkElement ...
- JavaScript字符串String方法介绍及使用示例
实例方法 charAt() charCodeAt() 返回索引位置的字符 'hello'.charAt(0) //h 等价 'hello'.[0] //返回索引位置的字符的Unicode码点 'hel ...
- Dubbo SPI-Wrapper
前言 在Dubbo SPI中是通过Wrapper实现AOP,对于AOP相信大家都不陌生,这里不做的过多的介绍,我们主要来了解Dubbo SPI中是如何使用Wrapper类以及实现的细节. 使用场景 D ...
- netcore依赖注入通过反射简化
aspnetcore里面用到许多的service,好多业务代码都要通过Service.AddScoped.Singleton.Transient等注入进去,类太多了写起来和管理起来都很麻烦,所以借鉴了 ...
- docker-compose搭建的Mysql主从复制
设置前注意下面几点: 1)要保证同步服务期间之间的网络联通.即能相互ping通,能使用对方授权信息连接到对方数据库(防火墙开放3306端口). 2)关闭selinux. 3)同步前,双方数据库中需要同 ...
- three.js教程4-Group层级模型
1.组对象Group.层级模型-形成树状结构 //创建两个网格模型mesh1.mesh2 const geometry = new THREE.BoxGeometry(20, 20, 20); con ...
- 4G EPS 的架构模型
目录 文章目录 目录 前文列表 EPS 的架构 EPS 的架构模型 E-UTRAN UE eNodeB EPC MME(移动性管理) SGW(本地移动性锚点) PGW(业务锚点) HSS(用户认证及鉴 ...
- kubernetes运行应用Controller3之Job、CronJob详解
成功启动一个Job 1.Job.spec.template.metadata,没有空格符的错误 [machangwei@mcwk8s-master ~]$ cat mcwJob1.yml apiVer ...
- wpf布局递归
wpf布局递归的调用到底是怎样的顺序?我一直挺模糊. 按照继承顺序. 已知: 1.1.UIElement:声明了Measure 1.2.UIElement:声明了MeasureCore,返回Size( ...
- linux下使用chattr创建一个连root都无法删除的文件
一.关于chattr,lsattr 1.chattr 的作用:改变一个Linux文件系统上的文件属性. 2.chattr用来改变文件.目录的属性,lsattr用来查看文件.目录的属性. 3.chatt ...