阿里云CentOS7上安装配置caffe(仅CPU)记录

机器学习 2016-03-13

  终于要尝试caffe了,这个框架目前在深度学习领域十分流行,功能也十分强大,caffe的种种优势就不说了,但由于安装过程中实在遇到了太多坑,所以记录下来,供大家参考。附上caffe的官方教程,有空可以看看。   我是用root身份安装的,首先从github上把最新的 caffe pull下来,上传到/root目录下并解压。   1.安装依赖库

 yum install atlas-devel protobuf-devel leveldb-devel snappy-devel opencv-devel boost-devel hdf5-devel gflags-devel glog-devel lmdb-devel

   这些都是必须的,至于作用不一一解释,有兴趣的可以一一查找,其中lmdb是caffe中使用的数据库,是键/值对嵌入式数据库管理系统编程库的一种。    上述基本都能直接找到,若找不到,请直接下载安装包编译安装。

  2.安装openCV

  先安装依赖:

yum install cmake git pkgconfig gtk2 gtk2-devel

  caffe中必须用到opencV,所以我们要先安装,这里有两种方式,一种是用其他人写好的脚本。

 git clone https://github.com/jayrambhia/Install-OpenCV
 cd Install-OpenCV/RedHat
 sudo ./opencv_latest.sh

  通过以上三行命令搞定。如果失败,就只能下载安装包自己编译了,这里不详细介绍了。

  3. 安装caffe数学库(ATLAS, MKL, OpenBLAS)   这也是caffe的坑之一(关系到后面的配置文件),linux一般来说自带了atlas,你可以选择不安装,或者说可以安装英特尔提供的数学库MKL(链接),这是收费产品,但可以用学生邮箱申请序列号,很方便。大小有3G,我的服务器配置有限,就不安装了,有需要的可以留言。为什么要安装呢,据说可以加速。

  4.安装glog

  下载链接

  5.编译caffe

  其实步骤也不是特别复杂,关键在于编译中出现的bug会让人抓狂,建议去github上caffe项目的issue下看看,你出现的问题其他人其实也出现过。   编译只需要两行

   cp Makefile.config.example Makefile.config
   make all

  Makefile.config其实就是caffe的配置文件,copy之后不要急着make,不妨打开看看,做适当的修改,否则很容易出现意想不到的bug。   我的Makefile.config是这样的Makefile.config.txt   其中要注意的是

# BLAS choice:
# atlas for ATLAS (default)
# mkl for MKL
# open for OpenBlas
BLAS := atlas
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
# BLAS_INCLUDE := /path/to/your/blas
# BLAS_LIB := /path/to/your/blas

  总之要根据你的实际情况修改,没用的可以注释,每个人的情况是不同的。

  附上我遇到的的一个error:

/usr/bin/ld: cannot find -lcblas
/usr/bin/ld: cannot find -latlas
collect2: error: ld returned 1 exit status
make: *** [.build_release/lib/libcaffe.so.1.0.0-rc3] Error 1

  其实就是BLAS配置问题

  make大概半个小时就能结束,取决于机器配置。

  6.测试

  如果编译成功,那么恭喜你可以开始测试了   拿经典的手写数据集来来看:   首先进入、data/mnist,执行get_mnist.sh脚本,自动下载数据集,速度较慢(可以直接在本机下载上传)。然后到/example/mnist 目录下执行create_mnist.sh脚本,获得mnist-train-leveldbmnist-test-leveldb数据集。修改lenet_solver.prototxt文件最后一行,将GPU改为CPU,并执行train_lenet.sh。如果一切顺利,就能看到caffe开始训练并输出结果了。


本文由 Tony 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

如果对您有用,您的支持将鼓励我继续创作!