Ubuntu 16.04安装Caffe并训练MNIST

Caffe安装

通过下面的命令安装protobuf,leveldb,snappy,opencv,hdf5,boost依赖库,其中最需要注意的是hdf5。

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

sudo apt-get install --no-install-recommends libboost-all-dev


接着安装BLAS库,

sudo apt-get install libatlas-base-dev

之后是gflags,glog和lmdb,

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev


如果不出意外的话,上面多个依赖库安装都非常顺利,让人有点怀疑,但是里面hdf5这个库有个坑,之后会提到。

用如下命令将Caffe源码克隆到桌面,路径是’Desktop/caffe/’,为了方便将Caffe主路径用$CAFFE_ROOT代替,

git clone https://github.com/BVLC/caffe
cd Desktop/caffe/


其中需要将Makefile.config.example拷贝一份成Makefile.config,这样之后才能make。另外Makefile.config需要进行修改,去掉CPU_ONLY := 1的注释,这样Caffe就只运行在CPU上了。

cp Makefile.config.example Makefile.config
make all
make test
make runtest


在make all这一步遇到了一些问题,首先是找不到hdf5.h,在Makefile.config中INCLUDE_DIRS后添加/usr/include/hdf5/serial即可继续编译。

src/caffe/layers/hdf5_data_layer.cpp:13:18: fatal error: hdf5.h: No such file or directory


但是此后又出现如下问题,

/usr/bin/ld: cannot find -lhdf5_hl
/usr/bin/ld: cannot find -lhdf5


可以在LIBRARY_DIRS后添加/usr/lib/x86_64-linux-gnu/hdf5/serial/,最终Makefile.config文件对应部分修改如下,

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial/


以上的操作保证Caffe编译过程中可以找到hdf5的头文件和共享库文件。


最终的make runtest可以看到如下图的结果,保证Caffe安装成功,

MNIST训练

之前将Caffe的环境搭好了,现在用MNIST这个数据集进行测试,继续在$CAFFE_ROOT下进行操作。

./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh


经过上述操作./examples/mnist/路径下会有mnist_test_lmdb和mnist_train_lmdb两个文件夹,分别是测试和训练数据。

在最终训练之前需要修改./examples/mnist/lenet_solver.prototxt最后一句话为,

solver_mode: CPU


这样保证整个训练过程在CPU上进行,最后执行训练命令,

cd $CAFFE_ROOT
./examples/mnist/train_lenet.sh


看到如下效果:

一共迭代10000次,准确率为0.9915,最后训练的model为./examples/mnist/lenet_iter_10000.caffemodel。

猜你喜欢

转载自www.linuxidc.com/Linux/2016-09/135025.htm
今日推荐