约定一下,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的文件之间逻辑分析的更多相关文章

  1. java 线程 原子类相关操作演示样例 thinking in java4 文件夹21.3.4

    java 线程  原子类相关操作演示样例 package org.rui.thread.volatiles; import java.util.Timer; import java.util.Time ...

  2. Relation Extraction中SVM分类样例unbalance data问题解决 -松弛变量与惩罚因子

    转载自:http://blog.csdn.net/yangliuy/article/details/8152390 1.问题描述 做关系抽取就是要从产品评论中抽取出描述产品特征项的target短语以及 ...

  3. 请编写一个方法,返回某集合的所有非空子集。 给定一个int数组A和数组的大小int n,请返回A的所有非空子集。保证A的元素个数小于等于20,且元素互异。各子集内部从大到小排序,子集之间字典逆序排序,见样例。

    题解:观察测试样例,会发现每个子集的选择规律与二进制((2^n) - 1)到 1 的顺序生成的规律是一致的,样例中n=3,2^n-1=7,用二进制表示为111,其中每一位的1表示数组中的三个数都选择. ...

  4. jbpm入门样例

    1.      jBPM的简介 jBPM是JBOSS下的一个开源java工作流项目,该项目提供eclipse插件,基于Hibernate实现数据持久化存储.    參考 http://www.jbos ...

  5. 浅谈hadoop中mapreduce的文件分发

    近期在做数据分析的时候.须要在mapreduce中调用c语言写的接口.此时就须要把动态链接库so文件分发到hadoop的各个节点上,原来想自己来做这个分发,大概过程就是把so文件放在hdfs上面,然后 ...

  6. WebGL自学教程——WebGL演示样例:開始

    最终開始WebGL的演示样例了,...... 開始 使用WebGL的步骤,非常easy: 1. 获得WebGL的渲染环境(也叫渲染上下文). 2. 发挥你的想象力,利用<WebGL參考手冊> ...

  7. 最简单的视音频播放演示样例3:Direct3D播放YUV,RGB(通过Surface)

    ===================================================== 最简单的视音频播放演示样例系列文章列表: 最简单的视音频播放演示样例1:总述 最简单的视音频 ...

  8. HBase总结(十一)hbase Java API 介绍及使用演示样例

    几个相关类与HBase数据模型之间的相应关系 java类 HBase数据模型 HBaseAdmin 数据库(DataBase) HBaseConfiguration HTable 表(Table) H ...

  9. Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求)

    Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求)     本篇博客介绍Cocos2d-x 3.2Lua演示样例中的XMLHttpRequestTes ...

  10. obj-c编程15[Cocoa实例03]:MVC以及归档化演示样例

    前面的博文里介绍了归档和解档,这里我们把它实际应用到一个简单的代码中去,将它作为一个多文档应用程序的打开和保存的背后支持.另外这里介绍一下MVC思想,这个在不论什么语言里都会有,它是一种设计思想,主要 ...

随机推荐

  1. [FE] ServerSideRender 加上 PWA 特性的一种处理方式

    SSR 和 PWA 这两块分开讲,需要做不少的处理,现在我们有了一种简便的方式来处理它,就是使用 Quasar 框架. Quasar 支持了 SPA.SSR.PWA.Mobile APP.Electr ...

  2. C语言程序设计-笔记3-循环结构

    C语言程序设计-笔记3-循环结构 例4-1  用格雷戈里公式求给定精度的π值.使用格雷戈里公式求π的近似值,要求精确到最后一项的绝对值小于给定精度eps. =1--+-+- #include<s ...

  3. 自动化测试数据生成:Asp.Net Core单元测试利器AutoFixture详解

    引言 在我们之前的文章中介绍过使用Bogus生成模拟测试数据,今天来讲解一下功能更加强大自动生成测试数据的工具的库"AutoFixture". 什么是AutoFixture? Au ...

  4. Gparted扩展硬盘空间

    需求:有一些磁盘占满了空间,例如/亦或者/opt目录等.可以通过Gparted扩展空间. 1.vmware添加ISO [添加光盘]gparted-live-cd添加至ISO 2.延迟引导启动,强制进入 ...

  5. 高性能远程桌面Splashtop 居家办公首选软件

    2020年,新冠疫情期间,各地提倡远程办公.居家办公.在家里怎么使用办公室的电脑?以Splashtop为代表的远程桌面控制软件也就被越来越多的人知晓和使用了. 什么是Splashtop远程桌面? Sp ...

  6. C语言:汉诺塔问题(Hanoi Tower)------递归算法

    汉诺塔问题是一个经典的问题.汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆 ...

  7. 【漏洞复现】CVE-2023-27372 RCE漏洞

    产品介绍 SPIP是一个互联网发布系统,其中非常重视协作工作,多语言环境和Web作者的易用性.它是自由软件,在GNU/GPL许可证下分发.这意味着它可以用于任何互联网站点,无论是个人的还是机构的,非营 ...

  8. text/event-stream协议

    客户端接收 text/event-stream html <!DOCTYPE html> <html> <head> <meta charset=" ...

  9. Stenciljs 学习之搭建项目

    框架介绍 stenciljs 是用于构建可重用.可扩展的设计系统的工具链.生成在每个浏览器中运行的小型.超快且 100% 基于标准的 Web Component. 更对介绍请参考官方网站 创建项目 使 ...

  10. 10W QPS高并发,如何防止重复下单?

    小北说在前面 10wqps高并发,如何防止重复提交/支付订单? 10wqps高并发,如何防止重复下单? 10wqps高并发,如何防止重复支付? 10wqps高并发,如何解决重复操作问题? 最近有小伙伴 ...