本次的编译环境是在虚拟机上的Ubuntu16.04上进行的。

一、caffe的编译

1)安装caffe的依赖文件

由于虚拟机下的Ubuntu系统一般不包含GPU,故这次安装时为了在无GUP环境下运行caffe。 有GPU安装caffe与无GPU安装caffe的区别一般就两点:

1.安装CUDA的时候不安装显卡驱动;

2.最后安装好caffe,运行程序时,将相关配置文件改为CPU运行模式,而不是GPU运行模式。

首先,先安装一个git,在这之前要进行依赖源的更新

$sudo apt-get update

然后进行git的安装(可以使用git --version对是否安装了git进行查看)

$sudo apt-get install git

接着进行依赖源的安装

$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

$sudo apt-get install libatlas-base-dev

注意:这些安装都需要ubuntu联网的情况下才能安装成功

进行完这些安装之后


2)配置python

$sudo apt-get install python-dev

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

加载之后下载caffe源码


3)下载caffe源码

$ git clone https://github.com/bvlc/caffe.git

经过一段时间下载之后


4)修改Makefile.config

$ cd caffe              //到caffe的根目录下

$ mv Makefile.config.example Makefile.config       //修改Makefile文件

//用vi编辑器打开Makefile.config,修改其中的CPU_ONLY选项,本例子只用CPU模式,打开该选项(去掉“#”)表示caffe编译时仅支持CPU,不支持GPU

CPU_ONLY :=1


5)编译caffe

//接着进行caffe的编译,这个过程需要一定的时间

$ cd caffe

$ make pycaffe

$ make all

$ make test

$ make runtest

注意:编译时要把当前目录定位到caffe根目录下,否则会报错

make:***No rule to make target 'pycaffe'.  Stop.

加载完这些命令之后没有报错就应该是编译完成了。

接下运行caffe的经典例子MNIST对其进行测试


编译的时候常见的问题:

a) 配置caffe的python环境时make pycaffe提示fatal error:numpy/arrayobject.h No such file or directory时解决办法:

sudo apt-get install python-numpy


b)make pycaffe 时出现fatal error:hdf5.h:没有那个文件或目录的解决办法:

首先在Makefile.config文件的第85行,添加/usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码。

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include

INCLUDE_DIRS:=$(PYTHON_INCLUDE)/usr/local/include  /usr/include/hdf5/serial/

然后在Makefile文件的第173行,把 hdf5_hl 和hdf5修改为hdf5_serial_hl 和 hdf5_serial,也就是把下面第一行代码改为第二行代码。

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial


二、MNIST的训练

      MNIST(Mixed National Institute of Standards and Technology)是一个大型的手写体数字数据库,广泛的用于机器学习领域的训练和测试。


1) 下载MNIST的数据集

可以在Caffe源码框架下的data/mnist下用get_mnist.sh下载

$ cd caffe/data/mnist

$ ./get_mnist.sh

get_minst.sh是用来下载MNIST数据集和解压数据集的

t10k-labels-idx1-ubyte   train-labels-idx1-ubyte

t10k-images-idx3-ubyte  train-images-idx3-ubyte


2) 转换格式

下载到的原始数据集为二进制,需要转换为LEVELDB或LMDB才能被caffe识别

在caffe根目录下执行

./examples/mnist/create_mnist.sh

Creating lmdb

Done.

接下来就可以进行训练了


3) 训练选用的是MNIST数据集的LeNet模型,在examples/mnist下可以看到LeNet的相关信息

执行

$ ./examples/mnist/train_lenet.sh

即可开始训练,收敛过程很漫长。

注意:如果无法正常开始训练那么需要进入到examples/mnist/lenet_solver.prototxt 中

将最后一项solver_mode的GPU改为CPU 后
再运行 examples/mnist/train_lenet.sh 就可以正常训练了

 



Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐