1. 程式人生 > >ubuntu16.04下安裝anaconda3+caffe+cuda8.0+cudnnv5.1+matlab R2015b以及出現的錯誤

ubuntu16.04下安裝anaconda3+caffe+cuda8.0+cudnnv5.1+matlab R2015b以及出現的錯誤

一、安裝順序

我是先安裝anaconda3(python3.6.6),然後安裝cuda9.0+cudnnv7,最後從官網下載caffe(linux版)進行caffe編譯的,最後安裝matlabR2015b

ubuntu16.04截圖快捷鍵:對整個螢幕 Pr Scrn ,對某一個視窗alt+Pr Scrn,對一個區域(自定義的區域)shift+Pr Scrn

二、anaconda3的安裝

這部分以及cuda9.0的安裝網上有很多部落格都說的很明白,一般沒有什麼太大問題,安裝完畢記得新增環境變數

1、anaconda3新增環境變數:

終端輸入:sudo gedit ~/.bashrc

export PATH="/home/zyn/anaconda3/bin:$PATH"\

2、解除安裝之前的cuda9.0

sudo /usr/local/cuda-9.0/bin/uninstall_cuda_9.0.pl

sudo rm -rf /usr/local/cuda-9.0

3、在網上找教程安裝cuda8.0(ubuntu下64位的且是deb版本的,runfile版本的比較難安裝)

三、編譯caffe

首先安裝caffe依賴包,此時不在caffe目錄下,而是在比如[email protected]:~$下

1、sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libhadf5-serial-dev protobuf-compiler

sudo apt-get install --no-install-recommends libboost-all-dev

sudo apt-get install libatlas-base-dev

sudo apt-get install cmake

sudo apt-get libgflags-dev libgoogle-glog-dev liblmdb-dev

sudo apt-get install build_essential

一定要確保上述依賴包全部安裝成功,如若不成功,可先嚐試終端輸入sudo apt-get update以後再次安裝

2、如果需要使用caffe的python介面,則需要安裝/home/zyn/caffe/python下面的requirements.txt裡面要求的所有包

可以安裝依賴sudo apt-get install python-dev python-numpy

                       sudo apt-get gfortran(這句主要是為了成功安裝scipy的,否則可能scipy安裝不成功)

                       sudo apt-get python-scipy

注:上述python依賴我是安裝了的,因為我們之前已經安裝了anaconda,所以這一步也許可以省略掉,我不是很確定,開始我是沒有安裝這些依賴,後來安裝了下,可以試試先不安裝

在caffe目錄下輸入cd ./python

                               for req in $(cat requirements.txt); do pip install $req; done

然後就可以看到這個txt裡面列出的包是否已經全部成功安裝。

3、關於opencv的安裝

其實不用專門安裝opencv的,後面需要的caffe介面matlab裡面自帶的有opencv,python裡面也可以通過pip install python-opencv來安裝。在我將要執行的程式碼裡面沒有使用opencv

4、配置Makefile.config

在caffe根目錄下輸入:cp Makefile.config.examples Makefile.config

然後修改Makefile.config,caffe根目錄下繼續輸入sudo gedit Makefile.config

在檔案中可以通過ctrl+f來查詢某一行

去掉USE_CUDNN := 1的註釋,去掉USE_OPENCV:=1的註釋,由於我沒有使用opencv,所以網上說的opencv_version:=3的註釋我沒有去掉。

使用cuda8.0,去掉-gencode arch=compute_20,code=sm_20 \         -gencode arch=compute_20,code=sm_21 \

#MATLAB_DIR := /usr/local改為你自己的路徑,並去掉註釋:MATLAB_DIR := /home/zyn/MATLAB/R2015b

我在這個編譯裡沒有使用anaconda的python,使用系統自帶的,所以

PYTHON_INCLUDE := /usr/include/python2.7 \         /usr/lib/python2.7/dist-packages/numpy/core/include

【注:如果你們使用anaconda的python,可以將上述註釋掉,然後修改下列程式碼就行了(去掉註釋,改成自己的版本)

#ANACONDA_HOME := $(HOME)/anaconda3  #PYTHON_INCLUDE := $(ANACONDA_HOME)/include \          #$(ANACONDA_HOME)/include/python3.6m \          #$(ANACONDA_HOME)/lib/python3.6m/site-packages/numpy/core/include

# PYTHON_LIBRARIES := boost_python3 python3.6m】

取消WITH_PYTHON_LAYER := 1的註釋

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

改為:

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

5、配置Makefile檔案,這個檔案在caffe的目錄下,注意不是Makefile.config檔案

在181行將LIBRARIES += glog gflags protobuf boost_system boost_filesystem m 修改為

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

第大概425行將NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

修改為NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

以上就配置完畢,下面開始編譯

四、caffe編譯

在caffe目錄下進入終端輸入:sudo make all -j8

                                                    sudo make test

                                                     sudo make runtest -j8

編譯matlab介面:sudo make matcaffe這裡可能會提示你gcc版本不超過×××,不用理會,也不用對gcc進行降級啥的,

然後sudo make mattest -j8

這裡一般會出現錯誤,說什麼無效的mex檔案啥的,最後出來個caffe.set_mode_gpu()或者caffe.set_mode_cpu()錯誤啥的,忘記了怎麼修改的,但好像是與.bashrc檔案有關

我的bashrc檔案如圖所示,當在python下面輸入import caffe不成功的時候在.banshrc檔案中輸入

export PYTHONPATH=/home/zyn/caffe/python:$PYTHONPATH(下圖中第124行)

    五、在matlab裡面執行caffe程式

可以在命令視窗中輸入 cd path

    然後進入.m程式所在的資料夾,執行程式

六、出現的錯誤之一(只截圖這一個)

       就在終端中輸入locate libtiff.so.5(這個檔名是可以改變的,就看你哪個出現沒有版本資訊了)

然後輸入 cp /usr/lib/x86_64-linux-gnu /home/zyn/anaconda3/bin/libtiff.so.5即可,然後問題就會解決了

七、忘記是哪一步出現錯誤了,問題是這麼解決的(錯誤描述大概是找不到libstdc++.so.6,然後把這個檔案移除並用/usr/lib/x86_64-linux-gnu/libstdc++.so.6替換它,之後又出現新的問題,說是什麼invalidate:大寫字母),就用下面的解決辦法,在caffe目錄下執行,注意換成你的matlab路徑

sudo rm -rf /home/zyn/MATLAB/R2015b/sys/os/glnxa64/libstdc++.so.6 sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 /home/zyn/MATLAB/R2015b/sys/os/glnxa64/libstdc++.so.6 sudo rm -rf /home/zyn/MATLAB/R2015b/bin/glnxa64/libopencv_core.so.2.4 sudo ln -s /usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4.9  /home/zyn/MATLAB/R2015b/bin/glnxa64/libopencv_core.so.2.4 sudo rm -rf /home/zyn/MATLAB/R2015b/bin/glnxa64/libopencv_imgproc.so.2.4 sudo ln -s /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4.9  /home/zyn/MATLAB/R2015b/bin/glnxa64/libopencv_imgproc.so.2.4 sudo rm -rf /home/zyn/MATLAB/R2015b/bin/glnxa64/libopencv_highgui.so.2.4 sudo ln -s /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4.9  /home/zyn/MATLAB/R2015b/bin/glnxa64/libopencv_highgui.so.2.4 sudo rm -rf /home/zyn/MATLAB/R2015b/bin/glnxa64/libfreetype.so.6 sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so.6  /home/zyn/MATLAB/R2015b/bin/glnxa64/libfreetype.so.6

八、啟動matlab時出現一堆類似於警告的東西比如

uname: /home/zyn/MATLAB/R2015b/bin/glnxa64/libtiff.so.5: no version information available (required by /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4) sed: /home/zyn/MATLAB/R2015b/bin/glnxa64/libtiff.so.5: no version information available (required by /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4) getconf: /home/zyn/MATLAB/R2015b/bin/glnxa64/libtiff.so.5: no version information available (required by /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4) awk: /home/zyn/MATLAB/R2015b/bin/glnxa64/libtiff.so.5: no version information available (required by /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4) awk: /home/zyn/MATLAB/R2015b/bin/glnxa64/libtiff.so.5: no version information available (required by /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4) /home/zyn/MATLAB/R2015b/bin/glnxa64/MATLAB: /home/zyn/MATLAB/R2015b/bin/glnxa64/libtiff.so.5: no version information available (required by /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4) sh: /home/zyn/MATLAB/R2015b/bin/glnxa64/libtiff.so.5: no version information available (required by /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4) ps: /home/zyn/MATLAB/R2015b/bin/glnxa64/libtiff.so.5: no version information available (required by /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4) /bin/sh: /home/zyn/MATLAB/R2015b/bin/glnxa64/libtiff.so.5: no version information available (required by /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4) grep: /home/zyn/MATLAB/R2015b/bin/glnxa64/libtiff.so.5: no version information available (required by /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4) grep: /home/zyn/MATLAB/R2015b/bin/glnxa64/libtiff.so.5: no version information available (required by /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4) grep: /home/zyn/MATLAB/R2015b/bin/glnxa64/libtiff.so.5: no version information available (required by /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4) 解決方式:在/home/zyn/MATLAB/R2015b下啟動終端輸入sudo ./matlab就可以無警告的開啟matlab了。