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学习:第一个测试程序的更多相关文章

  1. caffe windows 学习第一步:编译和安装(vs2012+win 64)

    没有GPU,没有linux, 只好装caffe的windows版本了. 我的系统是win10(64位),vs 2012版本,其它什么都没有装,因此会需要一切的依赖库. 其实操作系统只要是64位就行了, ...

  2. 【神经网络与深度学习】深度学习实战——caffe windows 下训练自己的网络模型

    1.相关准备 1.1 手写数字数据集 这篇博客上有.jpg格式的图片下载,附带标签信息,有需要的自行下载,博客附带百度云盘下载地址(手写数字.jpg 格式):http://blog.csdn.net/ ...

  3. Java学习第一天

    Java学习第一天 对于网络管理员或者黑客必须知道的八个cmd命令 详情请参考:http://www.2cto.com/os/201608/533964.html          nbtstat  ...

  4. Java 学习第一步-JDK安装和Java环境变量配置

    Java学习第一步——JDK安装及Java环境变量配置 [原文]  2014-05-30 9:09  Java SE  阿超  9046 views Java作为当下很主流的编程语言,学习Java的朋 ...

  5. supervessel-免费云镜像︱GPU加速的Caffe深度学习开发环境

    开发环境介绍 在SuperVessel云上,我们为大家免费提供当前火热的caffe深度学习开发环境.SuperVessel的Caffe有如下优点: 1) 免去了繁琐的Caffe环境的安装配置,即申请即 ...

  6. MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.5 Adding a raster layer

    MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.5 Adding a  raster layer 一.前言 MapServer不仅支持 ...

  7. Magento学习第一课——目录结构介绍

    Magento学习第一课--目录结构介绍 一.Magento为何强大 Magento是在Zend框架基础上建立起来的,这点保证了代码的安全性及稳定性.选择Zend的原因有很多,但是最基本的是因为zen ...

  8. YII2学习第一天

    YII2学习第一天,之前稍微看了看TP,感觉和自己的理念不是很符合,然后转学YII2了. 使用的文档是https://github.com/yiisoft/yii2/tree/master/docs/ ...

  9. 一、Android学习第一天——环境搭建(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 一. Android学习第一天——环境搭建 Android 开发环境的搭建 ...

随机推荐

  1. spring源码分析的书到了

    现在写java后台可以说都能用上spring 在原有的spring基础上,加上自己定制的一些功能,能够使编程变得非常简化. 我也准备在我的毕业设计中写一些spring改造的东西.用来简化开发. 就拿连 ...

  2. ppt

    放映时  F5是从头开始放映, shift+F5是从当前页开始放映 在菜单->幻灯片放映->勾选  “使用演讲者视图”      就可以在播放时看到自己的备注

  3. 关于EditText的一点深入的了解

    最近在开发android下的记事本程序时,频繁的使用EditText控件,折腾来折腾去,算是对其的了解更深入了一些.特将这些收获记录如下: 一.几个属性的介绍 android:gravity=&quo ...

  4. Effective Java 15 Minimize mutability

    Use immutable classes as much as possible instead of mutable classes. Advantage Easy to design, impl ...

  5. CSRF 攻击原理和防御方法

    1. CSRF攻击原理 CSRF(Cross site request forgery),即跨站请求伪造.我们知道XSS是跨站脚本攻击,就是在用户的浏览器中执行攻击者的脚本,来获得其cookie等信息 ...

  6. ajax回调中的this.href不执行跳转的解决办法

    1. 问题背景 如下所示代码: $.post("/ems/register",indata, function(data){ if(data != null && ...

  7. 第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装

    微信服务器和第三方服务器之间究竟是通过什么方式进行对话的? 下面,我们先看下图: 其实我们可以简单的理解: (1)首先,用户向微信服务器发送消息: (2)微信服务器接收到用户的消息处理之后,通过开发者 ...

  8. linux多线程同步pthread_cond_XXX条件变量的理解

    在linux多线程编程中,线程的执行顺序是不可预知的,但是有时候由于某些需求,需要多个线程在启动时按照一定的顺序执行,虽然可以使用一些比较简陋的做法,例如:如果有3个线程 ABC,要求执行顺序是A-- ...

  9. 技巧:利用 Workflow 显示附近的免费 Wi-Fi

    得益于 Workflow 自 1.5.3 版本起更新的 Get Content of URL 动作,该 App 的潜力得到了极大的提升.本文分享一种有趣的用法,搜寻附近的免费 Wi-Fi 并择一显示在 ...

  10. CentOS 6.5上MySQL安装部署与入门。

    centos 6.5 yum 安装mysql1. 安装软件:yum install -y mysql-server mysql mysql-devel2.启动服务:service mysqld sta ...