1. 程式人生 > 實用技巧 >《機器學習 caffe 環境搭建——redhat7.1 和 caffe 的 python 介面編譯》

《機器學習 caffe 環境搭建——redhat7.1 和 caffe 的 python 介面編譯》

機器學習 caffe 環境搭建——redhat7.1 和 caffe 的 python 介面編譯

相信看這篇文章的都知道 caffe 是幹嘛的了,無非就是深度學習、神經網路、計算機視覺、人工智慧這些,這個我就不多介紹了,下面說說我的安裝過程即遇到的問題,當然還有解決方法。

說下我的環境:1》虛擬機器:VM Workstation 12 Player2》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 installpython-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 bysudo yum install atlas-develor 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 installpython-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, 有錯誤,或者有問題的地方歡迎下方交流。