caffe windows学习:第一个测试程序
caffe windows编译成功后,就可以开始进行测试了。如果还没有编译成功的,请参考:caffe windows 学习第一步:编译和安装(vs2012+win 64)
一般第一个测试都是建议对手写字体minist进行识别。这个测试放在根目录下的 .\examples\mnist\ 文件夹内。
1、下载数据。程序本身不带测试数据,需要去下载,测试数据为leveldb格式。你可以直接双击运行“get_mnist_leveldb.bat” 这个脚本自动下载数据,但一般都不成功,可能里面的网址被墙了。你可以直接到此下载:http://pan.baidu.com/s/1hry1f4g
下载好后直接解压,得到两个文件夹(mnist-train-leveldb和mnist-test-leveldb),将这两个文件夹直接复制到 .\examples\mnist\ 目录下。
2、修改配置文件。该目录下prototxt扩展名的都是配置文件。我们只需要修改lenet_solver.prototxt,用vs2012打开(也可以用记事本打开,但格式混乱,看不清楚),定位到最后一行:solver_mode: GPU,将GPU改为CPU。 如果你有GPU,这一步就可以免了。
3、运行。直接双击文件“train_lenet.bat”就开始运行了,很简单吧。
但是原理是什么呢? 打开“train_lenet.bat”这个文件看看:
copy ..\\..\\bin\\MainCaller.exe ..\\..\\bin\\train_net.exe
SET GLOG_logtostderr=1
"../../bin/train_net.exe" lenet_solver.prototxt
pause
这个脚本程序其实很简单,只有四行:
第一行:将根目录下的bin文件夹里面的MainCaller.exe复制一份,并重命名为train_net.exe
第二行:设置glog日志。glog是google 出的一个C++轻量级日志库,介绍请看 glog
第三行:运行train_net.exe,并带一个参数lenet_solver.prototxt(即我们刚才修改的配置文件)
第四行:测试完后,暂停。
MainCaller.exe是整个程序的入口,由它来调用其它的测试。我们打开对应的MainCaller.cpp文件(examples目录下),发现只有这么一行代码:
#include "../../tools/train_net.cpp"
即是去调用执行train_net.cpp文件。
打开打tools下的train_net.cpp,熟悉的main函数就出来了
#include <cuda_runtime.h>
#include <iostream>
#include <cstring> #include "caffe/caffe.hpp" using namespace caffe; // NOLINT(build/namespaces) int main(int argc, char** argv) {
::google::InitGoogleLogging(argv[]); //用第一个参数来初始化日志
::google::SetLogDestination(, "../tmp/"); //将日志放入/tmp/文件夹下
if (argc < || argc > ) {
LOG(ERROR) << "Usage: train_net solver_proto_file [resume_point_file]";
return ;
}
SolverParameter solver_param; //创建测试参数对象
ReadProtoFromTextFileOrDie(argv[], &solver_param); //读取具体的参数配置 LOG(INFO) << "Starting Optimization"; //打印日志信息
SGDSolver<float> solver(solver_param); //开始优化
//根据调用时,是否带第三个参数,进行不同的测试
if (argc == ) {
LOG(INFO) << "Resuming from " << argv[];
solver.Solve(argv[]);
} else {
solver.Solve();
}
LOG(INFO) << "Optimization Done."; //优化结束,打印日志信息 return ;
}
整个minist手写数字识别过程需要迭代10000次,识别精度会有99%以上。
如果你只是想看看caffe是否编译成功,不需要迭代那么多次,你可以修改lenet_solver.prototxt配置文件,定位到max_iter: 10000这一行,修改成你想要的迭代次数就行了。
我迭代1000次的结果如下:
屏幕上显示的这些,都是打印的glog日志信息,从左至右大致是:日期 时间 执行文件] 执行信息
caffe windows学习:第一个测试程序的更多相关文章
- caffe windows 学习第一步:编译和安装(vs2012+win 64)
没有GPU,没有linux, 只好装caffe的windows版本了. 我的系统是win10(64位),vs 2012版本,其它什么都没有装,因此会需要一切的依赖库. 其实操作系统只要是64位就行了, ...
- 【神经网络与深度学习】深度学习实战——caffe windows 下训练自己的网络模型
1.相关准备 1.1 手写数字数据集 这篇博客上有.jpg格式的图片下载,附带标签信息,有需要的自行下载,博客附带百度云盘下载地址(手写数字.jpg 格式):http://blog.csdn.net/ ...
- Java学习第一天
Java学习第一天 对于网络管理员或者黑客必须知道的八个cmd命令 详情请参考:http://www.2cto.com/os/201608/533964.html nbtstat ...
- Java 学习第一步-JDK安装和Java环境变量配置
Java学习第一步——JDK安装及Java环境变量配置 [原文] 2014-05-30 9:09 Java SE 阿超 9046 views Java作为当下很主流的编程语言,学习Java的朋 ...
- supervessel-免费云镜像︱GPU加速的Caffe深度学习开发环境
开发环境介绍 在SuperVessel云上,我们为大家免费提供当前火热的caffe深度学习开发环境.SuperVessel的Caffe有如下优点: 1) 免去了繁琐的Caffe环境的安装配置,即申请即 ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.5 Adding a raster layer
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.5 Adding a raster layer 一.前言 MapServer不仅支持 ...
- Magento学习第一课——目录结构介绍
Magento学习第一课--目录结构介绍 一.Magento为何强大 Magento是在Zend框架基础上建立起来的,这点保证了代码的安全性及稳定性.选择Zend的原因有很多,但是最基本的是因为zen ...
- YII2学习第一天
YII2学习第一天,之前稍微看了看TP,感觉和自己的理念不是很符合,然后转学YII2了. 使用的文档是https://github.com/yiisoft/yii2/tree/master/docs/ ...
- 一、Android学习第一天——环境搭建(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 一. Android学习第一天——环境搭建 Android 开发环境的搭建 ...
随机推荐
- IOS开发中(null)与<null>的处理
不小心在开发过程中,得到了(null)以及<null>的返回值,找了好长时间只找到了一个关于<null>的. 由于要根据返回值进行判断,做出必要反应,因此必须知道返回值所代表的 ...
- iOS9 HTTP 不能正常使用的解决办法
Google后查证,iOS9引入了新特性App Transport Security (ATS).详情:App Transport Security (ATS) 新特性要求App内访问的网络必须使用H ...
- IOS开发--常用的基本GDB命令
gdb不是万能的,可是没有gdb却是万万不能的.这里给大家简单介绍下iOS开发中最基本的gdb命令. po po是print-object的简写,可用来打印所有NSObject对象.使用举例如下: ( ...
- MySQL 存储过程实例 与 ibatis/mybatis/hibernate/jdbc 如何调用存储过程
虽然MySQL的存储过程,一般情况下,是不会使用到的,但是在一些特殊场景中,还是有需求的.最近遇到一个sql server向mysql迁移的项目,有一些sql server的存储过程需要向mysql迁 ...
- MySQL单机多实例安装并配置主从复制
单机多实例据说可以最大程度提高硬件使用,谁知道呢,但是以前的公司喜欢这样搞,我最近也在学习复制什么的,电脑搞不起两台虚拟机,刚好单机多实例可以解救我.下面就说说步骤. 承上文http://www.cn ...
- Nginx为什么比Apache Httpd高效:原理篇
一.进程.线程? 进程是具有一定独立功能的,在计算机中已经运行的程序的实体.在早期系统中(如linux 2.4以前),进程是基本运作单位,在支持线程的系统中(如windows,linux2.6)中,线 ...
- Tomcat 服务器版本的区别以及下载与安装
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun 和其他一些公司及个人共同开发而成.由于有了 ...
- java常用开发工具类之 图片水印,文字水印,缩放,补白工具类
import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...
- cordova Process finished with exit code -1
安装完cordova之后,创建一个测试项目后,运行报Process finished with exit code -1,经过查找原因,是因为gradle没有安装,在http://www.androi ...
- C#与MATLAB之间传递参数
本文转载自http://www.cr173.com/html/10249_1.html MWNumericArray是MWArray和c#中数据的中间类,怎么用?怎样在C参数? a.double型.i ...