安装环境:
Windows10
Visual Studio 2013
caffe:https://github.com/Microsoft/caffe
若安装编译GPU,首先检查显卡是否支持:https://developer.nvidia.com/cuda-gpus
再安装对应版本的CUDA和cudnn。
https://developer.nvidia.com/cuda-toolkit-archive
成功编译运行mnist例子:
步骤1.GPU配置(简略),若只编译CPU则跳到下一步
我安装的是CUDA9.0,对应cudnn7
CUDA安装好,将cudnn解压到.\\NVIDIA GPU Computing Toolkit\CUDA\v9.0\或者自己另外建立路径,但需要对其中的.dll配置环境变量。
步骤2.获取caffe包
caffe:https://github.com/Microsoft/caffe
可采用git命令复制工程到本地对应目录:
git clone https://github.com/Microsoft/caffe.git
步骤3.配置文件修改
配置文件在caffe路径下:./caffe/windows/CommonSettings.props
若存在libcaffe加载失败,原因是没有找到CUDA 9.0.props,路径在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\extras\visual_studio_integration\MSBuildExensions下所有文件复制到路径C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations后,重新加载libcaffe即可
说明:
(1)若采用CPU,则CPU写true,UseCuDNN写false
(2)若采用GPU,则CPU写false,UseCuDNN写true
将解压cudnn的路径写入CuDnnPath , 确定是否需要修改对应库路径(lib)和头文件路径(Include)
(3)若需要生成Python的接口,PythonSupport写true,否则写false
写入对应python库和头文件路径
若报错找不到python27.lib或者python35.lib,则把两个路径都写入,如图
(4)若需要生成Matlab的接口,MatlabSupport写true,否则写false
若报错找不到gpu\mxGPUArray.h,则写入对应的$(MatlabDIr)\toolbox\distcomp\gpu\extern\include
步骤4.编译
(1)先编译libcaffe
Treat Warnings As Errors:No
然后编译该项目,会报错error:too few arguments in function call
双击查看报错函数,在后面添加CUDNN_DATA_FLOAT或者CUDNN_DATA_DOUBLE
再次编译即可生成libcaffe.lib
步骤5.编译所有
把所有的项目都编译即可。
步骤6.例子mnist
下载mnist数据到caffe/data/mnist/
解压
在caffe/example路径下创建create_mnist.bat, 写入如下:
..\..\Build\x64\Release\convert_mnist_data.exe ..\..\data\mnist\train-images.idx3-ubyte ..\..\data\mnist\train-labels.idx1-ubyte ..\..\examples\mnist\mnist_train_lmdb
..\..\Build\x64\Release\convert_mnist_data.exe ..\..\data\mnist\t10k-images.idx3-ubyte ..\..\data\mnist\t10k-labels.idx1-ubyte ..\..\examples\mnist\mnist_test_lmdb
即可生成lmdb数据格式
在caffe/路径下创建train_lenet.bat,写入
Build\x64\Release\caffe.exe train --solver=examples/mnist/lenet_solver.prototxt
pause
文件说明:
example/mnist/lenet_solver.prototxt:求解
example/mnist/lenet_train_test.prototxt:定义训练和测试网络结构,配置输入数据路径
运行train_lenet.bat即可。
在pycaffe下可以利用draw_net.py画出网络结构图:
命令行:python draw_net.py lenet.prototxt image.jpg
对应的python依赖包如下:
Cython>=0.19.2
numpy>=1.7.1
scipy>=0.13.2
scikit-image>=0.9.3
matplotlib>=1.3.1
ipython>=3.0.0
h5py>=2.2.0
leveldb>=0.191
networkx>=1.8.1
nose>=1.3.0
pandas>=0.12.0
python-dateutil>=1.4,<2
protobuf>=2.5.0
python-gflags>=2.0
pyyaml>=3.10
Pillow>=2.3.0
six>=1.1.0
祝愉快!