http://blog.csdn.net/guoyk1990/article/details/52909864

2016-10-24 13:34 11651人阅读 评论(2) 收藏 举报
 分类:
深度学习(1)  图像处理(13)  caffe(1) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

本文主要介绍官方给出的caffe-windows的配置及如何训练mnist数据集,介绍的比较基础,大神请绕道

1、环境:windows 10\CUDA7.5\cuDNN\VS2013

2、GPU计算环境准备(没有GPU的同学可以跳过此步)

(1)首先下载并安装CUDA7.5,下载界面如图1:

图 1:CUDA7.5的下载界面

(2)下载cuDNN,注意要下载cuDNN v4版本,下载界面如图2:

图 2:cuDNN的下载界面

官网下载cuDNN需要先注册,而且要填一些调查表,也可以在我上传的资源中下载。下载后解压会有三个文件夹bin、include、lib。将这三个文件夹复制到cuda的安装目录中:\NVIDIA GPU ComputingToolkit\CUDA\v7.5。(cuda的安装目录中也有这三个文件夹,将这三个文件夹分别与原来存在的文件夹合并,如3图所示)。

图 3:CUDA 7.5 安装的根目录

3、caffe-windows准备

(1)下载官方caffe-windows并解压,将 .\windows\CommonSettings.props.example备份,并改名为CommonSettings.props。如图4所示:

图 4:修改后的CommonSettings.props文件

(2)关于CommonSettings.props文件的一点说明。

  1. </pre><pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?>
  2. <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  3. <ImportGroup Label="PropertySheets" />
  4. <PropertyGroup Label="UserMacros">
  5. <BuildDir>$(SolutionDir)..\Build</BuildDir>
  6. <!--NOTE: CpuOnlyBuild and UseCuDNN flags can't be set at the same time.-->
  7. <CpuOnlyBuild>false</CpuOnlyBuild><!--注释里说的很清楚,这两个值不能同时设为true。若没有GPU就把CpuOnlyBuild设为true-->
  8. <UseCuDNN>true</UseCuDNN>
  9. <CudaVersion>7.5</CudaVersion>
  10. <!-- NOTE: If Python support is enabled, PythonDir (below) needs to be
  11. set to the root of your Python installation. If your Python installation
  12. does not contain debug libraries, debug build will not work. -->
  13. <PythonSupport>false</PythonSupport><!--设置是否支持python接口,若想支持,需要改后面的PythonDir的值-->
  14. <!-- NOTE: If Matlab support is enabled, MatlabDir (below) needs to be
  15. set to the root of your Matlab installation. -->
  16. <MatlabSupport>false</MatlabSupport><!--设置是否支持matlab接口,若想支持,需要改后面的MatlabDir的值-->
  17. <CudaDependencies></CudaDependencies>
  18. <!-- Set CUDA architecture suitable for your GPU.
  19. Setting proper architecture is important to mimize your run and compile time. -->
  20. <CudaArchitecture>compute_35,sm_35;compute_52,sm_52</CudaArchitecture>
  21. <!-- CuDNN 3 and 4 are supported -->
  22. <CuDnnPath></CuDnnPath>
  23. <ScriptsDir>$(SolutionDir)\scripts</ScriptsDir>
  24. </PropertyGroup>
  25. <PropertyGroup Condition="'$(CpuOnlyBuild)'=='false'">
  26. <CudaDependencies>cublas.lib;cuda.lib;curand.lib;cudart.lib</CudaDependencies>
  27. </PropertyGroup>
  28. <PropertyGroup Condition="'$(UseCuDNN)'=='true'">
  29. <CudaDependencies>cudnn.lib;$(CudaDependencies)</CudaDependencies>
  30. </PropertyGroup>
  31. <PropertyGroup Condition="'$(UseCuDNN)'=='true' And $(CuDnnPath)!=''">
  32. <LibraryPath>$(CuDnnPath)\cuda\lib\x64;$(LibraryPath)</LibraryPath>
  33. <IncludePath>$(CuDnnPath)\cuda\include;$(IncludePath)</IncludePath>
  34. </PropertyGroup>
  35. <PropertyGroup>
  36. <OutDir>$(BuildDir)\$(Platform)\$(Configuration)\</OutDir>
  37. <IntDir>$(BuildDir)\Int\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
  38. </PropertyGroup>
  39. <PropertyGroup>
  40. <LibraryPath>$(OutDir);$(CUDA_PATH)\lib\$(Platform);$(LibraryPath)</LibraryPath>
  41. <IncludePath>$(SolutionDir)..\include;$(SolutionDir)..\include\caffe\proto;$(CUDA_PATH)\include;$(IncludePath)</IncludePath>
  42. </PropertyGroup>
  43. <PropertyGroup Condition="'$(PythonSupport)'=='true'"><!--与前面python接口设置对应-->
  44. <PythonDir>C:\Miniconda2\</PythonDir>
  45. <LibraryPath>$(PythonDir)\libs;$(LibraryPath)</LibraryPath>
  46. <IncludePath>$(PythonDir)\include;$(IncludePath)</IncludePath>
  47. </PropertyGroup>
  48. <PropertyGroup Condition="'$(MatlabSupport)'=='true'"><!--与前面的matlab接口设置对应-->
  49. <MatlabDir>C:\Program Files\MATLAB\R2014b</MatlabDir>
  50. <LibraryPath>$(MatlabDir)\extern\lib\win64\microsoft;$(LibraryPath)</LibraryPath>
  51. <IncludePath>$(MatlabDir)\extern\include;$(IncludePath)</IncludePath>
  52. </PropertyGroup>
  53. <ItemDefinitionGroup Condition="'$(CpuOnlyBuild)'=='true'">
  54. <ClCompile>
  55. <PreprocessorDefinitions>CPU_ONLY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  56. </ClCompile>
  57. </ItemDefinitionGroup>
  58. <ItemDefinitionGroup Condition="'$(UseCuDNN)'=='true'">
  59. <ClCompile>
  60. <PreprocessorDefinitions>USE_CUDNN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  61. </ClCompile>
  62. <CudaCompile>
  63. <Defines>USE_CUDNN</Defines>
  64. </CudaCompile>
  65. </ItemDefinitionGroup>
  66. <ItemDefinitionGroup Condition="'$(PythonSupport)'=='true'">
  67. <ClCompile>
  68. <PreprocessorDefinitions>WITH_PYTHON_LAYER;BOOST_PYTHON_STATIC_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  69. </ClCompile>
  70. </ItemDefinitionGroup>
  71. <ItemDefinitionGroup Condition="'$(MatlabSupport)'=='true'">
  72. <ClCompile>
  73. <PreprocessorDefinitions>MATLAB_MEX_FILE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  74. </ClCompile>
  75. </ItemDefinitionGroup>
  76. <ItemDefinitionGroup>
  77. <ClCompile>
  78. <MinimalRebuild>false</MinimalRebuild>
  79. <MultiProcessorCompilation>true</MultiProcessorCompilation>
  80. <PreprocessorDefinitions>_SCL_SECURE_NO_WARNINGS;USE_OPENCV;USE_LEVELDB;USE_LMDB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  81. <TreatWarningAsError>true</TreatWarningAsError>
  82. </ClCompile>
  83. </ItemDefinitionGroup>
  84. <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
  85. <ClCompile>
  86. <Optimization>Full</Optimization>
  87. <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  88. <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
  89. <FunctionLevelLinking>true</FunctionLevelLinking>
  90. </ClCompile>
  91. <Link>
  92. <EnableCOMDATFolding>true</EnableCOMDATFolding>
  93. <GenerateDebugInformation>true</GenerateDebugInformation>
  94. <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
  95. <OptimizeReferences>true</OptimizeReferences>
  96. </Link>
  97. </ItemDefinitionGroup>
  98. <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
  99. <ClCompile>
  100. <Optimization>Disabled</Optimization>
  101. <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  102. <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
  103. </ClCompile>
  104. <Link>
  105. <GenerateDebugInformation>true</GenerateDebugInformation>
  106. </Link>
  107. </ItemDefinitionGroup>
  108. </Project>

4、编译caffe-windows

编译用vs2013打开.\windows\Caffe.sln 并将解决方案的配置改为release,点菜单栏上的“生成->生成解决方案”,会将整个项目全部生成,这个时间会比较长(由于官方caffe-windows 的版本使用了NuGet管理第三方开发包,所以需要在vs2013上安装NuGet,官方网站下载速度比较慢,可以在我的资源里下载)。生成成功之后的文件都在.\Build\x64\Release中。

PS:生成时可能遇到的错误:errorC2220: 警告被视为错误 - 没有生成“object”文件 (..\..\src\caffe\util\math_functions.cpp)。这个错误可参考Sunshine_in_Moon 的解决方案

5、测试

1)下载MNIST数据集,MNIST数据集包含四个文件,如表1所示:

表1:MNIST数据集及其文件解释

文件

内容

train-images-idx3-ubyte.gz

训练集图片 - 55000 张 训练图片, 5000 张 验证图片

train-labels-idx1-ubyte.gz

训练集图片对应的数字标签

t10k-images-idx3-ubyte.gz

测试集图片 - 10000 张 图片

t10k-labels-idx1-ubyte.gz

测试集图片对应的数字标签

下载完后解压得到对应的四个文件,这四个文件不能直接用于caffe的训练和测试。需要利用第4步生成的convert_mnist_data.exe把四个文件转换为caffe所支持的leveldb或lmdb文件。

2)转换 训练\测试数据

a)  中的四个文件放到 . \examples\mnist\mnist_data文件夹下。

b)  在caffe-windows安装的根目录下,新建一个convert-mnist-data-train.bat文件转换为训练数据,并在文件中添加代码:

  1. Build\x64\Release\convert_mnist_data.exe --backend=lmdbexamples\mnist\mnist_data\train-images.idx3-ubyteexamples\mnist\mnist_data\train-labels.idx1-ubyte examples\mnist\mnist_data\mnist_train_lmdb
  2. pause

其中--backend=lmdb 表示转换为lmdb格式,若要转换为leveldb将其改写为--backend=leveldb 即可。

再新建一个convert-mnist-data-test.bat转换测试数据,代码为:

  1. Build\x64\Release\convert_mnist_data.exe --backend=lmdb examples\mnist\mnist_data\t10k-images.idx3-ubyte examples\mnist\mnist_data\t10k-labels.idx1-ubyte examples\mnist\mnist_data\mnist_test_lmdb
  2. Pause

Ps:(1)convert_mnist_data.exe的命令格式为:

convert_mnist_data [FLAGS] input_image_file input_label_file output_db_file

[FLAGS]:转换的文件格式可取leveldb或lmdb,示例:--backend=leveldb

Input_image_file:输入的图片文件,示例:train-images.idx3-ubyte

input_label_file:输入的图片标签文件,示例:train-labels.idx1-ubyte

output:保存输出文件的文件夹,示例:mnist_train_lmdb

(2)如果感觉很麻烦,也可以直接下载我转换好的MNIST文件(leveldb和lmdb)。

3)运行测试

(1)将第2)步中转换好的训练\测试数据集(mnist_train_lmdb\ mnist_train_lmdb或mnist_train_leveldb\mnist_train_leveldb)文件夹放在.\examples\mnist中。

(2)在caffe-windows根目录下新建一个run.bat,文件中代码:

  1. Build\x64\Release\caffe.exe  train --solver=examples/mnist/lenet_solver.prototxt
  2. pause

保存并双击运行,如果运行成功,说明caffe配置成功了。

注意使用leveldb或lmdb格式的数据时,需要将lenet_train_test.prototxt 文件里面的data_param-> source和data_param-> backend相对应,如图5红框所标注处。

 

图 5:lenet_train_test.prototxt文件中需要注意与训练\测试数据对应的部分

4)训练自己的数据

这部分可以参考下面的几个博客:

1.在caffe上跑自己的数据

2.windows下caffe训练自己的数据

References

BVLC/caffe

从零到一:caffe-windows(CPU)配置与利用mnist数据集训练第一个caffemodel

Windows+VS2013爆详细Caffe编译安装教程

【caffe-Windows】caffe+VS2013+Windows无GPU快速配置教程

官方Caffe-windows 配置与示例运行的更多相关文章

  1. 转载:官方Caffe-windows 配置与示例运行

    转载来自:http://blog.csdn.net/guoyk1990/article/details/52909864 本文主要介绍官方给出的caffe-windows的配置及如何训练mnist数据 ...

  2. Windows 配置nginx服务器 运行php项目

    1下载 http://nginx.org/en/download.html 选择稳定版下载. 2 解压后 直接双击nginx.exe 双击后一个黑色的弹窗一闪而过 3 修改配置文件nginx.conf ...

  3. Windows配置本地Hadoop运行环境

    很多人喜欢用Windows本地开发Hadoop程序,这里是一个在Windows下配置Hadoop的教程. 首先去官网下载hadoop,这里需要下载一个工具winutils,这个工具是编译hadoop用 ...

  4. 沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录

    目录 沁恒CH32F103C8T6(一): Keil5环境配置,示例运行和烧录 沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录 StdPeriphLi ...

  5. 快速解决:windows安装程序无法将windows配置为在此计算机的硬件上运行

    用手工运行msoobe.ext启用配置的方法, 快速解决:windows安装程序无法将windows配置为在此计算机的硬件上运行   我自己安装碰到的是蓝色这个错误,下面这个也有网友说用安装驱动等方法 ...

  6. Windows 安装程序无法将 Windows 配置为在此计算机的硬件上运行

    遇到这个问题是用辅助工具(WinNTSetup3.exe)进行的安装,重启后就就遇到“Windows 安装程序无法将 Windows 配置为在此计算机的硬件上运行” 解决:在WIN PE 下挂载安装光 ...

  7. windows安装程序无法将windows配置为在此计算机的硬件上运行

    关于装windows系统时,出现一些安装中断的处理 该方法适用于 windows安装程序无法将windows配置为在此计算机的硬件上运行 计算机意外地重新启动或遇到错误. Windows 安装无法继续 ...

  8. Windows下caffe的配置和调用caffe库(一)

    一.Windows下caffe的配置: 1. 下载caffe官网提供的开发包,https://github.com/microsoft/caffe 2. 将caffe-master目录下的Window ...

  9. windows配置caffe + python和matlab接口

    参考: http://blog.csdn.net/baidu_26408419/article/details/53711640 http://www.cnblogs.com/love6tao/p/5 ...

随机推荐

  1. [图论训练]1143: [CTSC2008]祭祀river 二分图匹配

    Description 在遥远的东方,有一个神秘的民族,自称Y族.他们世代居住在 水面上,奉龙王为神.每逢重大庆典, Y族都会在水面上举办盛大的祭祀活动.我们可以把Y族居住地水系看成一个由岔口和河道组 ...

  2. 一个老忘且非常有用的jquery动画方法 网页上卷

    $('html,body').animate({scrollTop:800+'px'},500) //网页上卷800像素 在半秒之内

  3. 一款手机端的日历插件ICalendar.js

    我的网盘:http://pan.baidu.com/s/1jIib2Ay

  4. x86 下的 struct 變數 member 擺放位置

    2 int main() 3 { 4 struct _test { 5 int a; 6 int b; 7 int c; 8 }; 9 10 struct _test test; 11 test.a ...

  5. Devexpress控件中gridcontrol Drag a column header here to group by that column 更换

    参照网站:http://documentation.devexpress.com/#WPF/DevExpressXpfGridDataViewBase_RuntimeLocalizationStrin ...

  6. delphiIDE 把 window 桌面改慢后的 还原方法

    在开始搜索框中键入services.msc,然后按回车键,打开服务列表. 重启这个服务就可以了.

  7. LeetCode OJ--Search Insert Position

    https://oj.leetcode.com/problems/search-insert-position/ 数组有序,给一个数,看它是否在数组内,如果是则返回位置,如果不在则返回插入位置. 因为 ...

  8. Javascript 限制文本字节数

    文本限制字数的问题,在实际开发中经常用到;主要问题出现在对中文的限制,下面代码就解决关于限制字节数的校验问题 以下是引用片段: /* value: 值: byteLength:数据库字节长度 titl ...

  9. 2012-2013 ACM-ICPC, NEERC, Central Subregional Contest

    A Hanoi Tower 递归 题意: 大家都很熟悉汉诺塔的递归程序,现在给你一个组合,询问你这个组合是否会出现在汉诺塔的递归过程中. 题解: 将汉诺塔的递归程序反过来思考,考虑当前最大的那个盘,我 ...

  10. Codeforces Gym 100203H Highways 最小生成树

    原题链接:http://codeforces.com/gym/100203/attachments/download/1702/statements.pdf 题解 给你平面上若干点,生成一颗完全图,让 ...