上手Caffe(二)
@author:oneBite
本文简述如何在windows环境下,运行caffe的“hello world”例程
体会适用caffe的流程:转换输入数据格式>在solver.prototxt中配置训练参数,在train.prototxt中配置网络结构和输入输出、激活函数>调用caffe train and test
"hello world"-运行识别手写数字的例程
先简要概述Linux下的运行caffe helloworld例程过程
编译caffe>下载相应的训练数据到指定目录>然后运行sh文件训练和测试即可。
Shell脚本所做的主要工作,调用编译得到相应的bin文件:
1 将输入数据转化到指定的数据格式-LMDB。文件夹中附有源码:vert_mnist_data.cpp;
2 运行caffe命令(即caffe.bin,是编译得到的可执行文件),训练网络>测试数据。在命令行中运行caffe –help可以看到些许帮助。
Windows
而windows下,solution编译之后也获得了很多exe文件,运行例程时,需要我们自己调用exe文件执行跟linux上一样的逻辑。
在vs2013中,可以看到编译生成的可执行文件的输出路径。
在project的properties>general>Output Directory中
其中的变量可以参看https://msdn.microsoft.com/en-us/library/c02as0cs.aspx。在本机上,目录是caffe-windows\caffe-windows\Build\x64\Debug。
本次例程需要使用convert_mnist_data.exe,caffe.exe
查看命令帮助:
E:\work17\caffe-windows\caffe-windows\Build\x64\Debug>
.\convert_mnist_data.exe –help
使用命令时,也可以参看linux端的sh文件中是如何调用相应的bin文件的,有一定的参考价值。Caffe官方并没有给出较为详细的reference手册。
convert_mnist_data.exe用于将mnist上下载的数据集转化为lmdb数据格式。可以看一下convert_mnist_data的源代码,了解lmdb格式内容。
命令使用格式 [flag] 输入数据 输入label文件 输出文件夹
Windows process
上述大致介绍了caffe运行的原理。注意调用命令时,cmd所处的目录为caffe的主目录,本机为E:\work17\caffe-windows\caffe-windows。
1 调用convert_mnist_data。
E:\work17\caffe-windows\caffe-windows>路径\convert_mnist_data \解压之后的image文件 \解压之后的label文件 \文件输出目录
运行一次之后,在指定的输出目录下就会出现data.mdb和lock.mdb文件
2 调用caffe,训练网络权值。(还是要注意运行exe时,cmd所处的当前目录)
\目录\caffe.exe train --solver=\目录\lenet_solver.prototxt
#solver.prototxt#
定义了训练时所需的参数
内容摘要:
#定义了描述训练网络结构的prototxt文件的位置
net: "examples/mnist/lenet_train_test.prototxt"
# solver mode: CPU or GPU,这里需要进行更改,因为上次编译的caffe,修改了config文件,编译得到的是不适用GPU的caffe.exe
solver_mode: CPU
#lenet_train_test.prototxt#
在lenet_train_test中设置训练和测试的数据来源 backend,大概格式的意思
data_param {
source: "examples/mnist/mnist_train_lmdb"
batch_size: 64
backend: LMDB
}
3 调用caffe,测试网络。
权值文件 caffemodel
caffe test -model train_test.prototxt -weights xxxx.caffemodel -iteration 100
上手Caffe(二)的更多相关文章
- Netron开发快速上手(二):Netron序列化
Netron是一个C#开源图形库,可以帮助开发人员开发出类似Visio的作图软件.本文继前文”Netron开发快速上手(一)“讨论如何利用Netron里的序列化功能快速保存自己开发的图形对象. 一个用 ...
- Laravel入门及实践,快速上手ThinkSNS+二次开发
温馨提示: l 本文纯干货,文字和代码居多,且适合零基础Laravel学习者: l 本文会新建一个名为 blog 的 Laravel 程序,这是一个非常简单的博客. l 欢迎随时关注ThinkSNS ...
- windows+caffe(二)——图片转换为levedb格式
借鉴于langb2014的 http://blog.csdn.net/langb2014/article/details/50458520 与liukailun09的 http://blog.cs ...
- socket网络编程快速上手(二)——细节问题(5)(完结篇)
6.Connect的使用方式 前面提到,connect发生EINTR错误时,是不能重新启动的.那怎么办呢,是关闭套接字还是直接退出进程呢?如果EINTR前,三次握手已经发起,我们当然希望链路就此已经建 ...
- socket网络编程快速上手(二)——细节问题(4)
5.慢系统调用及EINTR 还记得前面readn和writen函数么?里面有个EINTR,现在就来谈谈这个,这个很重要. Linux世界有个叫信号的东西,感觉他就像一位隐士,很少遇到他,而他又无处不在 ...
- WCF快速上手(二)
服务端是CS程序,客户端(调用者)是BS程序 一.代码结构: 二.服务接口Contract和实体类Domain INoticeService: using Domain; using System; ...
- 上手Caffe(一)
@author:oneBite 本文记录编译使用caffe for windows 使用环境 VS2013 ultimate,win7 sp1,caffe-windows源码(从github上下载ca ...
- mac 下安装caffe(二)
使用Anaconda Python 1.brew edit opencv args << "-DPYTHON_LIBRARY=#{py_lib}/libpython2.7.#{d ...
- Apache OFBIZ高速上手(二)--MVC框架
继续上一篇博客,本篇博客介绍OFBiz的MVC框架. 1.OFBiz特点 OFBiz最基本的特点是OFBiz提供了一整套的开发基于Java的web应用程序的组件和工具.包含实体引擎.服务引擎.消息引擎 ...
随机推荐
- 引用类型(二):Array类型
一.js中的数组与其它语言中的数组的区别1.ECMAScript数组的每一项可以保存任何类型的数据2.ECMAScript数组的大小是可以动态调整的 二.创建数组的基本方式1.使用Array构造函数 ...
- maven简单了解,没有Maven和使用Maven的区别
Maven提供了开发人员构建一个完整的生命周期框架.开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期.Maven让开发人员的工作更轻松,同时创建报表,检查,构建和 ...
- Pj Immediate Decodability
判断一个串是否是其他的前缀 我们需要建立一颗tire树 在插入边的时候,如果遇到一个其他串的结尾,那么就说明至少有一个串,是插入串的前缀.如果在插入完后没有新增的节点,那么插入的串就是其他串的前缀 # ...
- IIS配置MIME类型
有时候我们上传的视频,如果IIS上没有配置此格式是播放不了的.这个时候需要你在IIS上添加这个类型才能播放. MIME类型 ①打开你的IIS,点你的网站 ②双击 MIME类型 ③右键-->添加 ...
- 常见的HTTP状态码有哪些?
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求. ...
- 第34-2题:LeetCode113. Path Sum II
题目 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ ...
- Dijkstra&&Floyd
文章来源:(http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html) (以下内容皆为转载) Dijkstra算法 1.定义 ...
- jsp <form>表单提交中如何在value属性中写表达式
<input type="text" name="grop_id" value="<%=rs.getString(2)%>" ...
- MySQL中使用group_concat()函数数据被截取(有默认长度限制),谨慎!
最近在工作中遇到一个问题: 我们系统的一些逻辑处理是用存储过程实现的,但是有一天客服反馈说订单下单失败,查了下单牵扯到的产品基础资源,没有问题. 下单的存储过程中有这样两句代码: ; ; ; 执行存储 ...
- linux下载利器之curl和wget的区别
linux下载利器-------curl和wget的区别 curl和wget基础功能有诸多重叠,如下载等. 在高级用途上的curl由于可自定义各种请求参数所以长于模拟web请求,用于测试网页交互(浏览 ...