1. 程式人生 > >【泡咖啡1】linux下caffe編譯以及python環境配置手記

【泡咖啡1】linux下caffe編譯以及python環境配置手記

caffe是一個深度學習的庫,相信搞深度學習的話,不是用這個庫就是用theano吧。要想使用caffe首先第一步就是要配置好caffe的環境。在這裡,我主要說的是在debian的linux環境下如何配置好caffe的庫。因為python編寫程式比較方便,在文章最後,我還會具體說明如何配置python環境。本文章為本人原創,部分內容整理自網路,若有不妥之處請聯絡本人刪除。非盈利性質網站轉載請在文章開頭處著名本文作者:77695,來源http://www.cnblogs.com/cj695/。盈利性質網站轉載請與作者聯絡,聯絡方式在文章後面。如未聯絡,本人將通過一切可能且合法的途徑追繳相應稿酬。請在轉載時保留此宣告。

1、前期準備

image

使用這一句話建立一個makefile.config的副本

image

接下來就是修改makefile.config,在這個檔案裡面對應的註釋講的很清楚,需要哪一項,吧對應那一項前面“#”去掉就好了

image

先拿make all測試,提示錯誤如下:

image

make: protoc:命令未找到
make: *** [.build_release/src/caffe/proto/caffe.pb.h] 錯誤 127

2、編譯以及安裝protoc

image

執行

$ ./autogen.sh

image

原來先要安裝curl:額,貌似curl安裝不成功那就跳過吧。因為curl祈禱的作用就是下載檔案,但https://googletest.googlecode.com/files/gtest-1.7.0.zip

這個東西還是要下,那就直接下載吧,可能需要科學上網,這個方法那就八仙過海各顯省通,我就不贅述。

下載好以後把壓縮包移動過去。

image

找到對應位置註釋掉curl

image

再次執行,提示錯誤

./autogen.sh: 40: ./autogen.sh: autoreconf: not found

原因是沒安裝 automake 工具

執行命令安裝:sudo apt-get install autoconf automake libtool

再一次./autogen.sh,成功!然後依次執行以下命令

$ ./configure
$ make
$ make check
$ make install
執行完make check以後出現:

就說明沒什麼問題了,就可以繼續執行make install

執行完以後切換到caffe目錄,先make clean一下,接著make all

還是提示找不到庫,

3、安裝一系列依賴庫

再執行安裝一些庫:sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev,稍等

再執行make clean,接著make all,提示:

./include/caffe/common.hpp:5:27: fatal error: gflags/gflags.h: 沒有那個檔案或目錄。說明protobuf的庫已經差不多了。

4、安裝gflags

cd gflags-master mkdir build && cd build export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1 make sudo make install在執行第三句話的時候可能會提示版本較低,直接在這裡

下載最新版本的cmake就好了(下載.sh的檔案直接執行就可以了)。要配置一下環境變數image

然後接著執行下面兩條命令,就好了。弄完之後繼續切換到caffe目錄,先make clean一下,接著make all

./include/caffe/util/mkl_alternate.hpp:11:19: fatal error: cblas.h: 沒有那個檔案或目錄
compilation terminated.

說明gflag安裝成功了,

5、編譯安裝ATLAS

接下來開始搞定cblas的問題。BLAS(Basic Linear Algebra Subprograms,基礎線性代數程式集)是一個應用程式介面(API)標準。他的實現有很多,caffe用的是其中的三種實現ATLAS, MKL, or OpenBLAS.這裡我準備使用ATLAS:http://sourceforge.net/projects/math-atlas/files/ 先下載,解壓。按照官方文件寫的,依次執行如下命令

首先選擇高效能cpu模式:

/usr/bin/cpufreq-selector -g performance然後在ATLAS目錄下建立資料夾 mkdir Linux_C2D64SSE3 # create BLDdir cd Linux_C2D64SSE3 # enter BLDdir

../configure -b 64 -D c -DPentiumCPS=2800 -Fa alg -fPIC --with-netlib-lapack-tarfile=/home/haiyu/Programs_Install/lapack-3.5.0.tgz --prefix=/usr/local/atlas
粗體引數
需要根據個人系統修改:
-b 指定編譯出庫的型別(32位庫還是64位庫)
       -D c -DPentiumCPS 是指定你的CPU的時鐘頻率,可以通過 grep MHz /proc/cpuinfo 得到
       -Fa alg -fPIC 得到與位置無關的程式碼,生成動態的共享庫
       --prefix 為安裝路徑
       --with-netlib-lapack-tarfile 則是lapack壓縮包路徑

make build # tune & build lib make check # sanity check correct answer make ptcheck # sanity check parallel make time # check if lib is fast make install # copy libs to install dir

這裡還需要一個lapack的庫,在這裡下載http://www.netlib.org/lapack/,下載之後直接把/home/whaley/dload/lapack-3.4.1.tgz替換成對應的路徑就好了

在執行../configure的時候,會提示gfortran:命令未找到,直接用apt-get安裝即可。然後make build之後就可以休息去了。等一個小時再過來看吧。

ok。。現在是第二天。昨天晚上凌晨3點的時候終於看到它提示DONE了。這速度。太!“快”!了!繼續執行接下來的命令幾個可以忽略的就忽略了,然後再切換到CAFFE目錄make clean/all,依舊提示

image

但這個時候在atla的prefix指定的安裝路徑下已經有include/cblas.h

image

執行這兩條,新增目錄到include環境變數

6、安裝lmdb

接著make,提示錯誤lmdb沒裝

git clone git://gitorious.org/mdb/mdb.git 

cd mdb/libraries/liblmdb 

make && make install 

執行完,再回到caffe目錄編譯

提示

AR -o .build_release/lib/libcaffe.a
LD -o .build_release/lib/libcaffe.so
/usr/bin/ld: cannot find -lcblas
/usr/bin/ld: cannot find -latlas
collect2: error: ld returned 1 exit status

7、安裝其他依賴包

解決辦法:安裝這些包

apt-get install libatlas-dev
apt-get install liblapack-dev
apt-get install  libatlas-base-dev

問題解決

又提示這個錯誤.build_release/lib/libcaffe.so: undefined reference to `google::protobuf,重新編譯protobuf

make uninstall
make clean

./configure --prefix=/usr
make
make check
make install
搞定,返回caffe,編譯成功!!!!!!!!!!!!!此處有掌聲!!!!!

然後把目錄新增到PYTHON環境變數就行了

export PYTHONPATH=$PYTHONPATH:/home/cj695/protobuf/python/
最後還要找到protobuf的Python目錄

python setup.py build
python setup.py test
python setup.py install
安裝一下
激動人心的一顆來了!!!!!!!!!!!開啟python,import caffe。。這一刻,我哭了!!!!!!!!!!!!!

8、總結一下

耗費兩天時間,卡時間比較多的主要有兩個地方,首先查錯一定要從上往下查。基本上最上面的錯誤才是最根本的錯誤;其次,在安裝過程中對配置做過的修改一定要記清楚,別自己把安裝路徑改了結果還不知道是怎麼回事。

另外,如果在安裝gflags的時候出現問題,可以實驗一下用apt-get安裝gflag,命令如下:

sudo apt-get install python-gflags

caffe的配置大概也就這些內容,希望這篇文章能夠對你有所幫助