机器学习caffe环境搭建——redhat7.1和caffe的python接口编译

相信看这篇文章的都知道caffe是干嘛的了,无非就是深度学习、神经网络、计算机视觉、人工智能这些,这个我就不多介绍了,下面说说我的安装过程即遇到的问题,当然还有解决方法。

说下我的环境:1》虚拟机:VM Workstation 12 Player 2》OS:redhat7.1

虚拟机装好之后因为RedHat的yum服务是收费的,为了倒腾免费yum源看网上的教程,坑了一b,浪费了N久时间,最后得高人指点得以成功,写了个blog:redhat配置免费yum源

步入正题,安装caffe.再次建议大家尝试看英文文档,因为最新的东西很少有中文的,而且,中文教程各种坑。。。附上官方地址:caffe官方安装教程

1.安装依赖包,各种依赖包

这一步之前,你要先把yum 源都配好,要不的话会出现下面的情况:

假设你yum配置好了,继续:

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

sudo yum install atlas-devel

你可能会问,都是安装依赖为啥需要2条命令,而不是一条直接运行。这个我只能说,官方文档里第一行里的是:General dependencies,即:基本依赖,理解出必选的就行,第二行的包是:Remaining dependencies剩余的依赖?不管了,你只管装就好了。

另外,如果你是按照我上面给出的方法配置的yum源的话(上面支配了本地源,163源,和epel),可能还会有包找不到,这时候就要自己找源了,添加方法都是差不多的。

 如果你需要用caffe提供的python接口的话,那还有一个包需要安装:sudo yum install python-devel,后面会说到。

2.下载caffe源码,编译

sudo yum install git  
git clone https://github.com/BVLC/caffe.git 

下载过程有点慢,慢慢等。

下完之后,会在当前目录生成一个caffe文件夹,本文默认caffe下载到/code目录下,以下所有命令默认都在/code/caffe目录下,除非有cd命令出现。

root@localhost caffe]#cd /code/caffe

[root@localhost caffe]# cp Makefile.config.example Makefile.config

[root@localhost caffe]# vi Makefile.config
把第8行的注释打开,我们使用CPU模式,如图。

接着,开始编译吧,遇到问题再说:

[root@localhost caffe]# make all

遇到的第一个问题,如图:

很明显,提示g++找不到。安装g++,

[root@localhost caffe]# yum install gcc-c++

继续编译,遇到第二个错,如图:

 找不到atlas,上面明明装了atlas-devel,查看官方教程发现如下描述:

                                (图BLAS)

我标注了两个地方,先看第二个,说需要取消BLAS_LIB的注释,并且要设置atlas的路径,提示说一般都放在/usr/lib/atlas目录下。那就试试,但是编辑哪个文件呢?当然是Makefile.config,编辑它,如图:

找到51行的样子,果然有一个BLAS_LIB被注释掉了,第一步取消注释,第二步,先到/usr/lib64/atlas下看看有没有这个目录。我看了下是有的,并且在atlas下有这些文件,如图:

那把/usr/lib64/atlas配到51行,继续编译(make all),错误依旧。继续看官方给出的对BLAS的解释(图BLAS)(往上数第三个截图),

官方提示安装是这么说的:install ATLAS by sudo yum install atlas-devel or install OpenBLAS,注意一个or,我们刚才是第一种方法,现在试试安装openblas

yum install openblas openblas-devel

安装之后,搜索下安装到的目录:

find / -name "*openblas*.so"

发现都在/usr/lib64目录下,再次修改Makefile.config,如图:

再次编译:

make all

顺利通过。这里也给各位再次强调下,各种教程官网的最正宗,一定要强迫自己看官网。。。虽然是英文。。

接着运行下测试命令

make test
make runtest

上面的成功了,这两个应该不会有问题。

到此,caffe的安装就结束了.

接下来说下编译caffe的python接口,pycaffe:

还是在/code/caffe目录下:

第一步还是安装依赖,下把pip安装了,并且升级下:


[root@localhost caffe]#yum intall python-pip 
[root@localhost caffe]# pip install --upgrade pip

然后安装pycaffe的各种依赖:

[root@localhost caffe]# pip install -r python/requirements.txt
[root@localhost caffe]# yum install python-devel

把caffe的python接口路径添加到系统环境变量:

[root@localhost caffe]# vim /etc/profile
在文件的最后一行添加:
export PYTHONPATH=/code/caffe/python:$PYTHONPATH
注意,/code/caffe/python这部分要根据你的实际目录来填写。
然后然修改生效
[root@localhost caffe]# source /etc/profile
[root@localhost caffe]# source /etc/profile

编译pycaffe

[root@localhost caffe]# make pycaffe

 输出如下:

导入python试试:

提示找不到caffe,这时候再重新打开一个终端试试,如果还不行,那就说明配置有问题了。

我的导入时出现如下问题:

提示six这个包没有indexbytes方法。手动dir了一下,确实没有indexbytes,如下:

但是既然caffe代码里有写这个方法,那就应该是有的,猜测是python引用的six包的版本不对。于是想到看看系统里有没有其他的six.py文件:

python默认导入的是 /usr/lib/python2.7/site-packages/这个目录下的six.py,它没有indexbytes方法,看了下上图其他几个目录下的six.py文件都是有该方法的,于是,把/usr/lib/python2.7/site-packages/pip/_vendor下的six.py拷贝到/usr/lib/python2.7/site-packages/(建议备份)。然后重新打开一个终端,导入caffe

 

另外,导入caffe的时候若提示numpy版本问题,到/usr/lib64/python2.7/site-packages下执行

rm -rf numpy*

然后在安装numpy: pip install numpy

ok了,完事。祝好!欢迎下方交流。

 PS,有错误,或者有问题的地方欢迎下方交流。

原文地址:https://www.cnblogs.com/dadong616/p/6230609.html