如我们所知,CAFFE_ROOT下有一个文件夹叫tools,里面中有许多cpp文件,它们各自有其不同的功能。但是很显然,当我们要完成某样工作时,我们是不能直接用cpp文件的,只能用exe文件。如何利用这些cpp文件生成exe文件呢?这就是本次博客的主题。请记住,一大堆繁琐的配置不是目的,我们的目标是成功compile和build文件夹tools中的cpp文件,以生成所需要的exe文件。

关于如何配置,给出一个不错的参考文件:《windows+caffe+vs2013+cuda6.5配置记录》。

没错就是它。之所以说这个写得不错,是因为作者真心写得非常详细,基本上一路照他说的做就可以了。

1 与参考文件的不同之处

1、一些名称上的变化

参考文件给出的一些文件名称、环境变量名等可能与你计算机中的不一样,拿我自己的为例:

(1)CUDA_PATH_V6_5

我这里安装的是cuda7.0,所以这里面凡是写CUDA_PATH_V6_5的应该统统改成CUDA_PATH_V7_0。

(2)BOOST_1_56

caffe压缩包解压后,打开VS的“项目→属性→VC++目录→包含目录”,可以发现给出的是“BOOST_1_56_0”,因此在设置环境变量时,应该保持一致,写成“BOOST_1_56_0”。

2、一些与参考文件不同之处

(1)原文3.4.3里“编译./src/util中的文件”把cu文件也添加进去了,其实不必添加cu文件,把cpp装载进去就好。

(2)原文中“在db.cpp中作如下修改...CHECK_EQ”这一步都去掉,不知道是不是会有什么不好的影响。

2 怎么生成exe文件?

(1)对caffe压缩包解压后,由于“项目→属性”中给出的是相对路径,所以基本上不需要做什么变更,保持原样就好。解压后得到的文件夹里是这样的:

双击Caffe.sln,即可进入VS2013界面。

(2)进入后记得把正上方Debug旁边的win32改成x64,否则里面的每一个源文件都无法编译:

如果各源文件上方的#include文件打波浪线了,则说明包含文件路径没有设置好;或者包含路径设置好了,却没有把上图的win32改成x64。

(3)现在VS2013的左边栏中的内容如图所示。配置了半天,我们要做什么用,怎么用呢?其关键就在于文件夹“tools”!

在tools中一次只能放一个源文件,该源文件拥有着“main”函数,也就是整个程序的入口。在不同的场合,我们具有不同的需求,也就是说一次性tools文件夹内只允许有一个源文件。比如当我们想跑mnist时,该文件夹内就载入caffe.cpp;如果想要将自己的图像数据转成leveldb格式,则该文件夹内就载入convert_imageset.cpp。在CAFFE_ROOT\tools中提供了多个这样的源文件,可按需取用。

当build完毕后,在CAFFE_ROOT\x64\Debug中将会出现一个Caffe.exe文件,这就是可执行文件。在很多脚本文件里需要设置可执行文件的路径,指的就是这个可执行文件。

(4)当生成caffe.cpp的可执行文件后,如果再往tools文件夹中载入第二个cpp文件(如convert_imageset.cpp)并build,则当前Caffe.exe的内容(即caffe.cpp的内容)将会被抹除掉。一个好的方法就是先给Caffe.exe重命名一下(比如改名成total.exe)然后再build新的cpp文件,这样就可以把两个可执行文件都保留下来了。

2016.5.12

by 悠望南山

CAFFE学习笔记(三)在VS2013下生成需要的exe文件的更多相关文章

  1. Git学习笔记三--管理修改、撤销修改、删除文件

    1.管理修改 什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改. 为什么说Git ...

  2. CAFFE学习笔记(五)用caffe跑自己的jpg数据

    1 收集自己的数据 1-1 我的训练集与测试集的来源:表情包 由于网上一幅一幅图片下载非常麻烦,所以我干脆下载了两个eif表情包.同一个表情包里的图像都有很强的相似性,因此可以当成一类图像来使用.下载 ...

  3. CAFFE学习笔记(四)将自己的jpg数据转成lmdb格式

    1 引言 1-1 以example_mnist为例,如何加载属于自己的测试集? 首先抛出一个问题:在example_mnist这个例子中,测试集是人家给好了的.那么如果我们想自己试着手写几个数字然后验 ...

  4. Caffe学习笔记(三):Caffe数据是如何输入和输出的?

    Caffe学习笔记(三):Caffe数据是如何输入和输出的? Caffe中的数据流以Blobs进行传输,在<Caffe学习笔记(一):Caffe架构及其模型解析>中已经对Blobs进行了简 ...

  5. caffe搭建--WINDOWS+VS2013下生成caffe并进行cifar10分类测试

    http://blog.csdn.net/naaaa/article/details/52118437 标签: windowsvs2013caffecifar10 2016-08-04 15:33 1 ...

  6. Caffe学习笔记2--Ubuntu 14.04 64bit 安装Caffe(GPU版本)

    0.检查配置 1. VMWare上运行的Ubuntu,并不能支持真实的GPU(除了特定版本的VMWare和特定的GPU,要求条件严格,所以我在VMWare上搭建好了Caffe环境后,又重新在Windo ...

  7. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  8. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  9. ES6学习笔记<三> 生成器函数与yield

    为什么要把这个内容拿出来单独做一篇学习笔记? 生成器函数比较重要,相对不是很容易理解,单独做一篇笔记详细聊一聊生成器函数. 标题为什么是生成器函数与yield? 生成器函数类似其他服务器端语音中的接口 ...

随机推荐

  1. 淘宝开源项目之Tsar

    软件介绍: Tsar是淘宝开发的一个非常好用的系统监控工具,在淘宝内部大量使用,它不仅可以监控CPU.IO.内存.TCP等系统状态,也可以监控Apache,Nginx/Tengine,Squid等服务 ...

  2. 全国省会城市路网以及POI 数据

  3. ELKStack日志离线系统

    通过Filebeat抽取数据到logstash中,转存到ElasticSearch中,最后通过Kibana进行展示 https://www.ibm.com/developerworks/cn/open ...

  4. [Angular] ngClass conditional

    Using ngClass for conditional styling, here is the usage from the docs: /** * @ngModule CommonModule ...

  5. react-native 项目实战 -- 新闻客户端(1) -- 初始化项目结构

    1.在项目根目录新建Componet文件夹(专门用来放我们的自定义组件),里面新建Main.js.Home.js.Message.js.Mine.js.Find.js 2.修改 index.andro ...

  6. Codeforces 463C Gargari and Bishops 题解

    题目出处: http://codeforces.com/contest/463/problem/C 感觉本题还是挺难的.须要好好总结一下. 计算对角线的公式: 1 右斜对角线,也叫主对角线的下标计算公 ...

  7. 【Excle数据透视表】如何在数据透视表中使用合并单元格标志

    先有数据透视表如下: 现在看着这个格式不舒服,我们希望调整成如下这种样式 步骤 单击数据透视表任意单元格→右键→数据透视表选项→布局和格式→合并且居中排列带标签的单元格 注意:如果数据透视表报表布局不 ...

  8. java中获取文件路径的几种方式

    http://xyzroundo.iteye.com/blog/1116159关于绝对路径和相对路径: 绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:xyz es ...

  9. PLSQL中显示Cursor、隐示Cursor、动态Ref Cursor差别

    一.显式cursor 显式是相对与隐式cursor而言的,就是有一个明白的声明的cursor.显式游标的声明类似例如以下(具体的语法參加plsql ref doc ): cursor cursor_n ...

  10. MySQL 用户与权限管理

    MySQL权限系统的主要功能是证实连接到一台给定主机的用户,而且赋予该用户在数据库上的相关DML,DQL权限.MySQL存取控制包括2个阶段,一是server检查是否同意你连接:二是假定你能连接,se ...