Windows上运行Caffe自带的mnist例子
环境要求: win10,VS2013,CUDA7.5
Caffe的windows版下载地址:https://github.com/Microsoft/caffe
配置Caffe工程
1. 将Caffe源码的windows目录下CommonSettings.props.example文件复制一份,并重命名为CommonSettings.props。
2. 打开工程Caffe.sln,切换到Release,右键解决方案生成全部开始编译,会先下载相关的依赖库,如下图所示:
完成后,会发现在caffe源码目录的上一级多了一个名为NugetPackages的文件夹
3. 下载cudnn-7.5-windows10-x64-v5.0-ga.zip解压放置到NugetPackages同一级目录,如下图所示:
同时修改CommonSettings.props中的CuDnnPath的值为文件夹cuda的父目录路径
4. 这时会出现如下的错误信息
这是由于在相关目录
C:\ProgramFiles (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\
C:\ProgramFiles (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations
下缺少以下CUDA相关配置文件造成的:
(1) CUDA7.5.props
(2) CUDA7.5.targets
(3) Nvda.Build.CudaTasks.v7.5.dll
这3个文件在NVIDIA GPU Computing Toolkit以下两个目录中:
CUDA\v7.5\extras\visual_studio_integration\MSBuildExtensions
直接拷贝过去即可
5. 再次编译遇到如下错误:
这是我们需要用到NugetPackages\protoc_x64.2.6.1\build\native下的protoc.exe来生成caffe.pb.h和caffe.pb.c文件,将protoc.exe拷贝到caffe-master\src\caffe\proto目录下,和caffe.proto放置在一起,然后CMD到这个文件夹,执行下面命令:
protoc caffe.proto --cpp_out=./
即可生成相应文件,如下图所示:
6. 右键生成解决方案,编译成功后会生成一个Build的文件夹,里面有编译好的东西,如下所示:
运行Mnist
1. 首先下载数据文件
http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz
http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz
http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz
http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz
下载后如下四个文件:
放置到caffe-master\data\mnist目录下,解压,新建一个create_mnist.bat,内容如下:
..\..\Build\x64\Release\convert_mnist_data.exetrain-images.idx3-ubyte train-labels.idx1-ubyte..\..\examples\mnist\mnist_train_lmdb
echo.
..\..\Build\x64\Release\convert_mnist_data.exet10k-images.idx3-ubyte t10k-labels.idx1-ubyte ..\..\examples\mnist\mnist_test_lmdb
pause
执行create_mnist.bat文件,在examples\mnist目录下生成了对应的训练和测试集数据:
2. 打开examples\mnist目录下的lenet_solver.prototxt文件,可以看到solver_mode: GPU这一选项,可以设置为GPU或者CPU
3. 打开examples\mnist目录下的lenet_train_test.prototxt文件,修改第一个和第二个layer的source为第一步生成的训练测试数据,如下图所示:
4. 在caffe-master目录下生成trian_mnist.bat文件,内容如下:
.\Build\x64\Release\caffe.exetrain --solver=.\examples\mnist\lenet_solver.prototxt
Pause
5. 运行train_mnist.bat,开始训练,如果出现下面错误
那么说明当前设置的CUDA的architecture与电脑的CUDA不匹配
打开CommonSettings.props可以看到CudaArchitecture选项,设置成电脑GPU的Architecture,重新编译之前的caffe工程。
说明:编译之前,一定要确定对应的CudaArchitecture是正确的,查看方法:右键libCaffe工程->属性
点开CodeGeneration对话框,下面有一个宏按钮,点击如下,找到CudaArchitecture,查看值是否正确(我的电脑GPU计算能力是3.0,因此设置为compute_30,sm_30)
6. 训练过程如下:
训练结果如下:
准确率99.13%,结果文件如下:
From: https://blog.****.net/jieleiping/article/details/53134174