机器学习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,有错误,或者有问题的地方欢迎下方交流。