caffe中makefile的设置

来自:https://blog.****.net/u013078356/article/details/55095757

6.配置caffe

(1)使用Git直接下载Caffe非常简单,或者去https://github.com/BVLC/caffe下载。由于我习惯去github上找代码,所以就直接去下载的源码。

下载完成后,会在家目录下的下载里找到caffe-master.zip,用unzip命令解压到家目录下,然后重命名为caffe.

(2)因为make指令只能make Makefile.config文件,而Makefile.config.example是caffe给出的makefile例子,因此,首先将Makefile.config.example的内容复制到Makefile.config: sudo cp Makefile.config.example Makefile.config 

(3) 打开并修改配置文件:  sudo gedit Makefile.config #打开Makefile.config文件 根据个人情况修改文件: a.若使用cudnn,则 将 #USE_CUDNN := 1 修改成:  USE_CUDNN := 1 b.若使用的opencv版本是3的,则 将 #OPENCV_VERSION := 3  修改为:  OPENCV_VERSION := 3 c.若要使用python来编写layer,则 将       #WITH_PYTHON_LAYER := 1   修改为 WITH_PYTHON_LAYER := 1  d.重要的一项 : 将 # Whatever else you find you need goes here. 下面的

1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
2 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib 

修改为:

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

这是因为Ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径.

(4)修改makefile文件
打开makefile文件,做如下修改:
将:

NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)

替换为:

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

(5)编辑/usr/local/cuda/include/host_config.h
将其中的第115行注释掉:

#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
改为
//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!

(6)编译
make all -j8 #-j根据自己电脑配置决定
编译过程中可能会出现如下错误:
错误内容1:
"fatal error: hdf5.h: 没有那个文件或目录"
解决办法:
step1:在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/
stept2:在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
错误内容2:
"libcudnn.so.5 cannot open shared object file: No such file or directory"
解决办法是将一些文件复制到/usr/local/lib文件夹下:
#注意自己CUDA的版本号!

1 sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
2 sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
3 sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig
4 sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && sudo ldconfig

 (8)测试

sudo make runtest

如果运行之后出现下图,说明caffe配置成功。

caffe中makefile的设置

 

 MNIST数据集测试
配置caffe完成后,我们可以利用MNIST数据集对caffe进行测试,过程如下:
 
1.将终端定位到Caffe根目录
cd ~/caffe
 
2.下载MNIST数据库并解压缩
./data/mnist/get_mnist.sh
 
3.将其转换成Lmdb数据库格式
./examples/mnist/create_mnist.sh
 
4.训练网络
./examples/mnist/train_lenet.sh
训练的时候可以看到损失与精度数值,如下图:

caffe中makefile的设置

可以看到最终训练精度是0.9914。

 

[完毕]