在windows下配置caffe,直接使用微软推出了caffe for windows 简单省事。
一 . 编译配置
需要 Visual Studio 2013 对项目进行编译
实验室的电脑上原本就已经安装了CUDA7.5,我直接再下载cuDNNv5放进去就好了, 另外我需要使用到python接口,我的配置步骤如下,主要是参考ms的 github上的Windows Setup和BVLC的github上的 Windows Setup中的说明 。
先将项目拷贝到本地
C:\Projects> git clone https://github.com/Microsoft/caffe.git
将 .\windows\CommonSettings.props.example 拷贝一份到当前目录,命名为CommonSettings.props
在 ./caffe/windows 下打开 Caffe.sln ,NuGet会根据CommonSettings.props自动还原caffe所需要的第三方库, 需要耐心等待,配置不高的电脑很容易卡死
配置.\windows\CommonSettings.props
- 配置默认是使用GPU加速的,需要安装CUDA和cuDNN,如果只是用CPU的话可以将CommonSettings.props 中CpuOnlyBuild 设为true 并且将UseCuDNN设为false.
- 如果需要使用python接口,需要将 CommonSettings.props中的PythonSupport设置为true,而且要设置python的路径,不然在编译的时候会报pyconfig.h: No such file or directory将PythonDir的错误。
我使用的Anaconda,设置如下<PythonDir>D:\LHF\Anaconda2\</PythonDir>
等NuGet加载完依赖库后就可以直接build了,我直接选择release进行编译的。最后编译完会在 ./caffe下多出个Build目录, caffe就编译完成了。
二、 测试运行
配置完 以后就可以在caffe的根目录下执行了,先看看mnist
sh ./data/mnist/get_mnist.sh
sh ./examples/mnist/create_mnist.sh
第一个命令会下载mnist的数据,可以正常执行。
第二个命令会报如下错误 :
./examples/mnist/create_mnist.sh: line 17: build/examples/mnist/convert_mnist_da
ta.bin: No such file or directory
.bin 是linux下的执行程序,脚本应该是linux下使用的,我们在windows下跑,应该根据情况修改下:
打开create_mnist.sh可以看到如下:
#!/usr/bin/env sh
# This script converts the mnist data into lmdb/leveldb format,
# depending on the value assigned to $BACKEND.
set -e
EXAMPLE=examples/mnist
DATA=data/mnist
# 这里需要修改成caffe编译生成的路径,我的是BUILD=Build/x64/Release
BUILD=build/examples/mnist
BACKEND="lmdb"
echo "Creating ${BACKEND}..."
rm -rf $EXAMPLE/mnist_train_${BACKEND}
rm -rf $EXAMPLE/mnist_test_${BACKEND}
# 将原来的.bin 改成.exe
$BUILD/convert_mnist_data.bin $DATA/train-images-idx3-ubyte \
$DATA/train-labels-idx1-ubyte $EXAMPLE/mnist_train_${BACKEND} --backend=${BACKEND}
$BUILD/convert_mnist_data.bin $DATA/t10k-images-idx3-ubyte \
$DATA/t10k-labels-idx1-ubyte $EXAMPLE/mnist_test_${BACKEND} --backend=${BACKEND}
echo "Done."
我们搜索convert_mnist_data可以发现在caffe编译生成的目录下有convert_mnist_data.exe。
所以我们将BUILD路径先指向caffe编译生成的路径,我的是build/examples/mnist,然后再将convert_mnist_data.bin改为convert_mnist_data.exe,再执行命令就可以成功。成功后在./examples/mnist 下生成了mnist_test_lmdb和mnist_train_lmdb两个文件夹,内有训练数据和测试数据
然后就可以开始训练模型了
sh ./examples/mnist/train_lenet.sh
最后10000次迭代训练出来的结果准确率有99%