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了。