参考网站:

http://www.cnblogs.com/njust-ycc/p/5776286.html

无法找到gpu/mxGPUArray.h: No such file or directory

解决网站:http://www.fx114.net/qa-149-8865.aspxwww.fx114.net/qa-272-151280.aspx

一、前言

本文会详细地阐述caffe-windows的配置教程。由于博主自己也只是个在校学生,目前也写不了太深入的东西,所以准备从最基础的开始一步步来。个人的计划是分成配置和运行

官方教程,利用自己的数据集进行训练和利用caffe来实现别人论文中的模型(目前在尝试的是轻量级的SqueezeNet)三步走。不求深度,但求详细。因为说实话caffe-windows的配置

当初花了挺多时间的,目前貌似还真没有从头开始一步步讲起的教程,所以博主就争取试着每一步都讲清楚吧。

这里说些题外话:之所以选择SqueezeNet是因为相比于目前互联网行业深度学习应用的火热,移动设备端的深度学习应用实在少得可怜。如果我没记错地话,苹果在2016年9月7

日发布会中提到了机器学习两次,其中ios10的一个亮点就是利用深度学习技术实现照片中人脸的自动识别归类,私下里测试了下效果很不错。当然缺点也显而易见:由于需要大量的

计算,目前只在用户接通电源的情况下才会去识别。我的师兄们也尝试过用深度学习做移动设备端应用的开发,不过最后由于花费时间太长改成了上传到服务器端完成。所以计算量

大应该算是深度学习应用向移动设备端转移的一个很大问题。不过,有理由相信今后移动设备端的深度学习应用会变得越来越多,也会是一个前景广阔的市场。

二、环境

系统版本:Windows 10 专业版 64位

Visual Studio版本:Visual Studio Ultimate 2013

都可以从itellyou上下载到,强烈推荐使用上述版本的Visual Studio(以下简称VS)。

三、详细步骤

caffe-windows配置部分

(1)确保正确安装了VS后首先下载caffe-windows源代码,网址如下:

https://github.com/BVLC/caffe/tree/windows

我下载得到的caffe-windows.zip的MD5值为:8F2804014EF395094584230A4A9EE8A6,不排除后续源代码更新导致本教程失效的可能,因此保险的话可以校验一下。

(2)解压后进入如下路径:\caffe-windows\windows(之后路径均默认在caffe-windows文件夹下,因此都省略\caffe-windows)

在\windows目录下复制文件 CommonSettings.props.example(应该会以副本形式出现CommonSettings.props - 副本.example),并将该副本改名为CommonSettings.props。

(请确认显示文件扩展名这个选项已生效)

(3)用VS打开CommonSettings.props,进行如下两个更改后保存退出。

1.第7行的false改成true;2.第8行的true改成false;更改后效果如下:

如果是像我一样的初学者不推荐一开始就配置GPU版本的caffe,因为又会有很多问题出现,容易打消积极性,更应该先利用CPU版本初步掌握caffe后再进一步研究GPU版本。

(4)用VS打开\windows下的Caffe.sln,加载完成后右键点击解决方案资源管理器中的解决方案Caffe,选择启用NuGet程序包还原(VS会自动地将caffe要用到的第三方库下载完成,

就功能来说还是很方便的,有点类似linux的apt-get,还不用担心版本问题。不过就caffe实际用这个还原第三方库的体验来说真不咋的),如下图所示:

    接下来的过程十分漫长,还有可能出现未响应或下载中断的情况。

我想了一种可取且可行的方案:在第四步打开Caffe.sln之前先下载别人已经下载好的NugetPackages文件夹,并放到和caffe-windows文件夹的同级目录下。

这样之后再打开Caffe.sln时能够自动识别出来(亲自试了一下是可行的)。提供一个NugetPackages文件夹的压缩包:http://pan.baidu.com/s/1qYpg3bY,提取码f2zx。

如果自己可以下载,那下载完成后会在caffe-windows文件同级目录下出现一个新的NugetPackages文件夹(里面有16个子文件夹,都是caffe需要用到的库,

之后会结合实际运行结果简单介绍下这些库)。如果点击上图中的管理解决方案的NuGet程序包(G)还可以看到这些库的简要信息,如下图所示:

(5)之后点击项目-属性(或直接右击解决方案Caffe选择属性),把配置修改成Release x64,并将生成全部勾上,如下图所示。最后就可以点生成解决方案了,

然后又是较长的等待。。

这里会出现一个问题,单独说明下:

报出类似下面的错误:

error LNK1104:无法打开文件“libcaffe.lib”

网上的解决方案是对libcaffe单独重新生成,如下图所示:

但这样的话会出现另外一个错误:

error C2220:警告被视为错误-没有生成“object”文件

如果出现这样的错误,请打开项目-属性按照下图进行更改:

之后再对libcaffe重新生成应该就可以成功通过。

最后再点击生成-生成解决方案应该就可以生成成功了。至此caffe-windows配置完成。进入目录\caffe-windows\Build\x64\Debug里面众多的可

执行文件都会在之后用到。

其实Debug也是可以的,但是这样的话之后每次都要打开VS,总觉得有点不方便,所以后面还是通过自己写bat文件调用caffe。Debug的方法

可以参考这篇文章[2]。

到了这一步恭喜你配置已经完成了。接下来就可以用mnist数据集生成模型了。

mnist数据集测试部分

这部分本来应该分开来写的,但由于完成了caffe-windows配置部分也不知道到底配置得正不正确,所以还是一鼓作气地用机器学习的

Hello World程序:mnist手写数字数据集来测试下。

(1)首先下载mnist数据集http://yann.lecun.com/exdb/mnist/,这里需要注意的是caffe并不直接通过下载得到的四个文件进行训练,而是会

把它转化为lmdb或leveldb格式进行读取。lmdb是lightning(闪电的) memory-mapped database manager的缩写,能够把原始数据通过更为

高效的存储方式存储,从而加快读取和训练速度(lmdb比leveldb更快,可以看看刚刚的NugetPackages文件夹,当中就包含着对应的库)。

实现这个转化的代码是\examples\mnist的convert_mnist_data.cpp,但也没必要看,因为它的运行脚本create_mnist.sh显然是linux下的东西。

想了想也可以理解,毕竟caffe本来也不支持windows,能移植过来就不错了,也不能指望大牛们把所有例子的代码都一并移植过来。后续教程会

专门介绍如何实现自己的数据集向lmdb和leveldb转换。目前更很好的办法就是直接网盘下载,这里分享一个http://pan.baidu.com/s/1c2G9qyk 提取码xama。

里面是已经经过转换的leveldb格式的训练集和测试集,把这两个文件夹直接放到\examples\mnist目录下,如下图所示:

(2)在正式运行前还有几个文件中需要进行改动,首先用VS打开\examples\mnist目录下的lenet_solver.prototxt,将最后一行改成CPU:

可以看到,这个文件是对网络训练参数进行指定:max_iter指定了最大迭代次数,snapshot是输出中间结果。上图中的参数已经修改过,

初始的max_itersnapshot是10000和5000。

接着再用VS打开\examples\mnist目录下的lenet_train_test.prototxt,做如下修改以正确指定训练集和测试集。

这里额外介绍下caffe-windows采用的LeNet-5模型,也就是上图中layer的定义方式。由于之后自己写代码实现模型时肯定需要

对LeNet-5模型有了解,所以提供该模型的原始资料以供参考。

http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf

   其实平时看些别人论文中提供的代码,上述两个文件也算是论文和代码的核心所在。基本都是提供自己编写的上述两个文件,

再加上最终训练出来的caffemodel,日志和几张效果图。比如下图就是SqueezeNet提供的的:

(3)完成上述工作后就可以编写bat脚本进行正式训练了。回到caffe-windows的根目录下新建一个run.txt并写入以下内容(自己

敲一遍感觉效果更佳,特别是像我一样之前对bat文件完全不懂的人):

将后缀名改成bat后双击运行,不出意料,应该会出现类似如下的训练过程:

四、mnist运行结果

我清除解决方案后按照上述步骤重新试了一次,没有出现问题。当然也还是不能保证100%能运行,所以如果出现任何

错误的话欢迎交流。

下面就对运行的结果进行一些简单的解释:

最前面的部分是打印各种信息(包括是用CPU还是GPU、训练参数、网络参数等等),类似下图内容:

之后即为和下图一样的正式训练过程,可以看到打印信息的格式也是有规律的:

左侧为caffe采用的GLOG库内方法打印的信息,这个库主要起记录日志的功能,方便出现问题时查找根源,具体格式为:

[日期] [时间] [进程号] [文件名] [行号]

往右即为当前迭代次数以及损失值(训练过程不输出准确率accuracy)。

当迭代次数达到lenet_solver.prototxt定义的max_iter时,就可以认为训练结束了。并且最终会在目录\examples\mnist下产生

训练出的模型(文件后缀名为caffemodel和solverstate),如下图所示:

分别是训练至一半和训练最终完成后的模型。接下来可以用这模型对mnist的测试集和自己手写的数字进行测试(见下篇教程)。

五、结语

也许到目前为止你还是感觉caffe像个黑盒一样,无法洞悉它的具体工作过程。但至少到这一步为止你已经完成了最初的caffe

配置过程并成功利用mnist数据训练出了第一个caffemodel。之后的东西虽然不能说简单,但并没有这最初的一步来得意义重大。

完成了Step ZERO to ONE,就能饱含信心的继续下去,进一步探究caffe(好像鸡汤了?)。在接下来的教程中会用到该模型对mnist

数据集以及你自己手写的图片进行测试。后者还是很有趣的。

六、参考

[1]深度学习21天实战Caffe 赵永科 电子工业出版社

(虽然这本书由于大量地贴代码,评价不是太好,但对初学者还是有很多可取之处的)

[2]http://m.blog.csdn.net/article/details?id=51355143

[3]Caffe官方教程中译本 社区预览版

win7旗舰版+caffe+vs2013+matlab2014b(无GPU版)的更多相关文章

  1. 【神经网络与深度学习】caffe+VS2013+Windows无GPU快速配置教程

    首先来一波地址: happynear大神的第三方caffe:http://blog.csdn.net/happynear/article/details/45372231 Neil Z大神的第三方ca ...

  2. CAFFE安装 CentOS无GPU

    前记 由于是在一台用了很久的机器上安装caffe,过程比较复杂,网上说再干净的机器上装比较简单.如果能有干净的机器,就不用再过这么多坑了,希望大家好运!介绍这里就不说了,直接进入正题: Caffe 主 ...

  3. 【神经网络与深度学习】【CUDA开发】【VS开发】Caffe+VS2013+CUDA7.5+cuDNN配置过程说明

    [神经网络与深度学习][CUDA开发][VS开发]Caffe+VS2013+CUDA7.5+cuDNN配置过程说明 标签:[Qt开发] 说明:这个工具在Windows上的配置真的是让我纠结万分,大部分 ...

  4. ubuntu安装cpu版caffe

    最近在笔记本上配置了ubuntu14.04,并配置了caffe,整个过程大概花了2个小时. 希望在安装时能给大家一个启发,这里配置的是无gpu版的,因为我的笔记本时核心显卡,配置gpu版的要编译cud ...

  5. win7旗舰版C盘无写入权限别拒绝怎么办? 精选

    win7旗舰版C盘无写入权限别拒绝怎么办? 精选 https://zhidao.baidu.com/question/366277826663554972.html 浏览 42 次 1个回答 [热点话 ...

  6. caffe在windows 下的配置及matlab接口编译(无GPU)

    本人机子windows 10,matlab2015a,vs2013(官网使用的是vs2013) 1.首先去github上下载caffe的windows包,地址:https://github.com/B ...

  7. 终极优化_详解Win7旗舰版系统中可以关闭的服务

    Win7旗舰版系统是一款功能强大的系统,不过对于很多用户很多功能却使用不上,而支持功能的很多服务也多少占用了系统资源,那么我们可以通过关闭一些不使用的服务来达到让win7系统运行速度加快的目的.下面小 ...

  8. windows环境Caffe安装配置步骤(无GPU)及mnist训练

    在硕士第二年,义无反顾地投身到了深度学习的浪潮中.从之前的惯性导航转到这个方向,一切从头开始,在此,仅以此文记录自己的打怪之路. 最初的想法是动手熟悉Caffe,考虑到直接上手Ubuntu会有些难度, ...

  9. 硬盘安装雨林木风Win7旗舰版系统教程

    硬盘安装雨林木风Win7旗舰版系统教程 安装完成,登录后报administrator无权限, F8 进入安全模式,修改administrator的权限.

随机推荐

  1. ARC073D Simple Knapsack

    传送门 题目大意 给你n个物品,你有一个容量为W的背包,每一个物品都有它的重量和价值,让你从n个中选取若干个,使得总重量不超过背包的上限,而且使得价值最大. 分析 首先我们不难发现由于W很大,所以这并 ...

  2. Linux问题FAQ1

    1.使用vi编辑器时候,按方向键会产生A,B,C之类的 解决办法:ubuntu server 8.04, vim版本为 7.1.138,客户端使用pietty.vim 在插入模式下, 方向键被转为A ...

  3. Entity Framework Tutorial Basics(33):Spatial Data type support in Entity Framework 5.0

    Spatial Data type support in Entity Framework 5.0 MS SQL Server 2008 introduced two spatial data typ ...

  4. 前端总结·基础篇·JS(一)原型、原型链、构造函数和字符串(String)

    前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(三)补充 前端总结·基础篇·JS(一)原型.原型链.构造函数和字符串(String) 前 ...

  5. Business Trip to Taian

    工作必备 电脑.电源(下载好小助手.VPN.个人证书) 手机.充电器 重要参考书籍 生活用品 衣服,夏天体恤为主,别忘了加件外套 被罩.床单和枕巾 牙刷牙膏肥皂之类的必带,中号浴巾一条 拖鞋要不要? ...

  6. yzm10的小简介

    yzm10,退役OIer,现役ACMer.大学生一枚,从高中开始接触编程(入门pascal...),过程基本自学,蒟蒻一只,在各大比赛划水打酱油..15年水得noip联二后退役,结束OI之旅.也是在1 ...

  7. Server.MapPath方法的应用方法

    老是忘记Server.MapPath的使用方法了,下面记录一下,以备后用:总注:Server.MapPath获得的路径都是服务器上的物理路径,也就是常说的绝对路径1.Server.MapPath(&q ...

  8. 动态合并或定制GridView控件Header头某些列

    开发时,有时会对GridView控件头做一些字段合并.多行表头,多列合并,明白了其中的原理,实现起来,均能运用自如.下面Insus.NET分享自己的做法. 创建站点,创建aspx网页,拉GridVie ...

  9. Win10下Tensorflow+GPU的环境配置

    不得不说,想要为深度学习提前打好框架确实需要花费一番功夫.本文主要记录了Win10下,Cuda9.0.Cudnn7.3.1.Tensorflow-gpu1.13.1.python3.6.8.Keras ...

  10. Kotlin 数据类型(字符类型)

    Kotlin有两种常见的字符类型. 第一种是String,第二种char. String String 的类型的赋值必须是用双引号的. 格式: var name="Arm830" ...