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思想,这个在不论什么语言里都会有,它是一种设计思想,主要 ...
随机推荐
- 2024 年最值得推荐的 7 个 Vue3 组件库
你好,我是 Kagol. Vue 是一款易学易用,性能出色,适用场景丰富的渐进式 JavaScript 框架,深受广大开发者的喜爱,Vue3 更是推出了 Composition API,让逻辑复用更友 ...
- dotnet 在析构函数调用 ThreadLocal 也许会抛出对方已释放
我在不自量力做一个数组池,就是为了减少使用 System.Buffers.dll 程序集,然而在数组池里面,所用的 ThreadLocal 类型,在我对象析构函数进行归还数组时,抛出了无法访问已释放对 ...
- OLAP系列之分析型数据库clickhouse权限控制(六)
一.clickhouse权限管理 users.xml默认配置文件: <?xml version="1.0"?> <clickhouse> <profi ...
- ubuntu下安装php pdo扩展和导入数据库
默认安装的php不存在pdo扩展,因此在使用到的时候会报错,直接使用这个命令 apt-get install php-mysql 就可以成功安装pdo扩展 安装完数据库后需要导入sql语句,先进入数据 ...
- 安装assimp失败
使用Cmake和Visual Studio编译assimp成功(包括Debug和Release),并且安装Release版本也成功,但安装debug版本失败,安装输出信息如下: 通过提示找到脚本文件, ...
- Git命令拾掇
修改commit信息 git commit --amend -m 'The new message' 使用ssh替换https:// 设置某个仓库 git remote set-url origin ...
- OpenOCD + DAP-LINK调试ESP32的失败经历(2)
背景 https://www.cnblogs.com/liteng0305/p/17018299.html 上次使用乐鑫编译好的OpenOCD失败,可能是因为没有开启CMSIS-DAP支持,手动开启编 ...
- wpf 空间坐标系下,画一个立方体轮廓
代码: public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); Worignpt ...
- 一个基于 Spring Dubbo 微服务的快速开发脚手架,新手入门必备!
Spring-dubbo-skeleton 这是一个基于 Spring Dubbo 的快速开发脚手架,Github 地址:https://github.com/yxhsea/spring-dubbo- ...
- Android 12(S) MultiMedia Learning(七)NuPlayer GenericSource
本节来看一下NuPlayer Source中的GenericSource,GenericSource主要是用来播放本地视频的,接下来着重来看以下5个方法: prepare,start,pause,se ...