本文参考此文章:http://www.cnblogs.com/love6tao/p/5706830.html
补充一些
1.首先安装vs2013,不用多说
2.下载两个跟英伟达相关的东西,一个是CUDNN一个是CUDA,切记这两个不是一个东西。下载链接分别是 CUDNN 和 CUDA ,其中下载CUDNN要注册,那就注册吧!
我下载的版本如下图所示:
3.下载caffe源码,下载地址为 caffe
4.接下解压CUDNN压缩包,解压caffe源码压缩包,安装CUDA安装包,傻瓜式的,不用多说
5.解压caffe源码压缩包之后目录结构如下图所示,进入windows目录,将CommonSettings.props.example文件重命名为CommonSettings.props。然后编辑模式打开CommonSettings.props文件,将其中的<CudaVersion>8.0</CudaVersion>修改成自己的cuda版本,这里下载的是8.0,所以这里填写8.0;将其中的<CuDnnPath>D:\software\cuDNN\cudnn-8.0-windows7-x64-v5.0-ga</CuDnnPath>这一项的路径改成你的CUDNN解压缩出来的目录路径,注意路径到包含有cuda这个目录这一级就可以了。还需要注意的是cudnn的版本必须和cuda版本一直才行,这里都是8.0版本。
6.将你的CUDA安装目录C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\extras\visual_studio_integration\MSBuildExtensions中的四个文件,拷贝到C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations目录中。
7.使用vs2013打开caffe源码目录中的Caffe.sln工程文件,将libcaffe设置成x64 release版本编译,然后生成就可以了。第一次因为会自动的下载一些依赖库文件,保存到NugetPackages目录中,请耐心等待。
8.训练lenet
8.1 从http://yann.lecun.com/exdb/mnist这个网站下载mnist数据库,将其放在caffe-master\data\mnist\目录下。
8.2 将caffe-master\examples\mnist\convert_mnist_data.cpp文件中的内容复制到caffe项目中的caffe.cpp文件的末尾。然后注释掉原来caffe.cpp中的main()函数,编译一下caffe工程得到一个新的caffe.exe这个caffe.exe可以用来将mnist数据库的四个文件转换成caffe训练需要的lmdb数据库形式的数据。
8.3 运行
caffe.exe caffe-master\data\train-images.idx3-ubyte caffe-master\data\train-labels.idx1-ubyte caffe-master\data\mnist_train_lmdb --backend=lmdb
caffe.exe caffe-master\data\test-images.idx3-ubyte caffe-master\data\test-labels.idx1-ubyte caffe-master\data\mnist_test_lmdb --backend=lmdb
然后再caffe-master\data\中会生成两个文件夹mnist_train_lmdb和mnist_test_lmdb,这个里面就是mnist 的lmdb形式数据
9.然后将caffe.cpp文件还原成最初的,重新编译得到一个caffe.exe
10. 将caffe-master\examples\mnist\lenet_solver.prototxt和lenet_train_test.prototxt文件进行修改,注意其中用到的"\\",而不是"\"或者"/"
11. 开始训练,运行命令:caffe.exe train --solver=D:\caffe\caffe-master\caffe-master\examples\mnist\lenet_solver.prototxt 后可能会出现如下问题
解决方法:
这是 因为gpu运算能力没有配置对,运行C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\extras\demo_suite\devicdQuery.exe得到信息如下,发现我的计算能力为3.0。所以修改caffe-master\windows\CommonSettings.props文件中对应内容改成<CudaArchitecture>compute_30,sm_30;compute_30,sm_30</CudaArchitecture>
12.再次使用GPU训练Lenet最终结果如下