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[0]);  //用第一个参数来初始化日志::google::SetLogDestination(0, "../tmp/");   //将日志放入/tmp/文件夹下if (argc < 2 || argc > 3) {LOG(ERROR) << "Usage: train_net solver_proto_file [resume_point_file]";return 1;}SolverParameter solver_param;  //创建测试参数对象ReadProtoFromTextFileOrDie(argv[1], &solver_param);  //读取具体的参数配置
LOG(INFO) << "Starting Optimization";   //打印日志信息SGDSolver<float> solver(solver_param);  //开始优化//根据调用时,是否带第三个参数,进行不同的测试if (argc == 3) {LOG(INFO) << "Resuming from " << argv[2];solver.Solve(argv[2]);} else {solver.Solve();}LOG(INFO) << "Optimization Done.";  //优化结束,打印日志信息return 0;
}

整个minist手写数字识别过程需要迭代10000次,识别精度会有99%以上。

如果你只是想看看caffe是否编译成功,不需要迭代那么多次,你可以修改lenet_solver.prototxt配置文件,定位到max_iter: 10000这一行,修改成你想要的迭代次数就行了。

我迭代1000次的结果如下:

屏幕上显示的这些,都是打印的glog日志信息,从左至右大致是:日期 时间 执行文件] 执行信息

caffe windows学习:第一个测试程序相关推荐

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

    转载自:http://www.cnblogs.com/denny402/p/5041060.html 没有GPU,没有linux, 只好装caffe的windows版本了. 我的系统是win10(64 ...

  2. win10 下 caffe 的第一个测试程序(附带详细讲解)

    win10 下 caffe 的第一个测试程序 该部分包括两篇文章 win10 下 caffe 的第一个测试程序(附带详细讲解) 主要讲解如何利用 caffe 来训练模型. 如何调用 caffe 训练好 ...

  3. Android学习第一书

    大家好,我是一名Facebook的工程师,同时也是<第一行代码--Android>的忠实读者. 虽然我最近几年是在国外读书和工作的,但是和很多人一样,我也非常喜欢郭霖的博客以及他写的< ...

  4. 深度学习(六)caffe入门学习

    caffe入门学习 原文地址:http://blog.csdn.net/hjimce/article/details/48933813 作者:hjimce 本文主要讲解caffe的整个使用流程,适用于 ...

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

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

  6. linux操作系统学什么,Linux学习-第一天-什么是操作系统

    Linux学习--第一天--什么是操作系统? 第一章 什么是Linux 1.1 什么是Linux 1.1.1 计算机:计算的辅助工具 计算机必须要有的组件: 输入单元:如鼠标.键盘.卡片阅读器机,等等 ...

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

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

  8. 掉进悬崖的小白,捡到python基础秘籍,学习第一周——语法基础,小游戏,无脑循环

    掉进悬崖的小白,捡到python基础秘籍,学习第一周--语法基础,小游戏,无脑循环 人生苦短,我用python 语言的种类: 语言的发展: 什么是python 搭建 Python开发环境: 集成开发环 ...

  9. invader的java学习第一天基础篇

    invader的java学习第一天基础篇 一.java主要历史 ①java是Sun公司的产品,09年被Oracle公司收购. ②java语言之父:詹姆士高斯林 二.jdk.jre.jvm三者关系 jd ...

最新文章

  1. git reset 怎么还原_git reset --hard 操作后的数据恢复
  2. Hessian RPC示例和基于Http请求的Hessian序列化对象传输
  3. 文件操作的常用命令 -- grep, cut, sed
  4. C++STL的vector容器
  5. es6 日期字符串转日期_【R语言新书】1.4 数据结构Ⅲ:字符串、日期时间
  6. 解决windows指纹登录不灵问题
  7. 网络攻防技术——SQL注入
  8. spyder顺眼配色方案记录
  9. linux 图片修复,照片修复精灵软件-照片修复精灵手机版下载v1.0.1-Linux公社
  10. html如何防止内部撑开,CSS3 流式图片的设置,避免图片撑开所在的容器(附样例)...
  11. 创业项目融资似乎很容易。而事实上,真正创业拿到融资的项目连1%都不到。
  12. rsyslogd(开机或大量消息)消息丢失速率限制[internal_messages]: 569 messages lost due to rate-limiting
  13. 吴恩达神经网络和深度学习
  14. C51模拟PS2键盘(二)
  15. Power supply 子系统之最简驱动实现
  16. C++ 基础概念(二)
  17. Meth | elementary OS常用配置
  18. 背诵微机原理与接口这一篇就够了
  19. 链表中LinkList L与LinkList *L的区别以及(*L).elem,L.elem L-next,(*L)-next的区别
  20. proteus中仿真时钟计时器DS1307

热门文章

  1. 移动金融业务风控框架及设备风险识别的意义(下)
  2. springboot简易集成mybatisPlus+多数据源
  3. 专访4秒源码商城CTO陈杰:扎根互联网的“不安的心”
  4. 那些年,程序员读错的英语
  5. 小工匠聊架构- 提升性能的大杀器之缓存技术
  6. 深入理解分布式技术 - 消息幂等性如何保障不重复消费
  7. MySQL - MySQL不同存储引擎下索引的实现
  8. gnome mysql client_解决MySQLWorkbenchgnome-keyring-daemon错误的方法分享
  9. 数据结构与算法笔记(十五)—— 散列(哈希表)
  10. react 和 lodash 完美结合命令