一、安裝深度學習所須要的依賴python
執行下面的命令linux
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev sudo apt-get install git cmake build-essential
sudo apt-get install -y libatlas-base-dev
二、配置環境變量git
一樣使用 gedit 命令打開配置文件:github
sudo gedit ~/.bashrc
打開後在文件最後加入如下兩行內容: 瀏覽器
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
二、顯卡驅動程序安裝,bash
因爲新版本Ubuntus(> = 14.04)已內置驅動管理程序,能夠經過驅動管理程序來安裝顯卡驅動:「系統設置」 - >「軟件和更新「 - >」附加驅動「。若是列表中沒有相關的選項,請添加源後重試:app
sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt-get update
打開驅動管理,以下,選擇version 410.78....安裝學習
三、安裝cuda測試
從英偉達官網下載cuda10.0, 安裝過程當中注意不要選擇安裝CUDA中集成的顯卡驅動和OpenGL! (當詢問時選擇 」N「 ):ui
chmod +x cuda_10.0.130_410.48_linux.run sudo ./cuda_10.0.130_410.48_linux.run
當安裝完成後,請不要忘記在 「.bashrc」 或者 「.zshrc」(在「~/」目錄下,您須要使用Ctrl+H來查看隱藏文件)中配置系統環境變量:
export PATH=/usr/local/cuda-10.0/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
使該配置生效:
source ~/.bashrc
安裝完成後可用 nvcc -V 命令驗證是否安裝成功,若出現如下信息則表示安裝成功:
✗ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2018 NVIDIA Corporation Built on Sat_Aug_25_21:08:01_CDT_2018 Cuda compilation tools, release 10.0, V10.0.130
四、安裝cuDNN
4.1 使用deb包安裝
sudo dpkg -i ./libcudnn7_7.5.1.10-1+cuda10.0_amd64.deb sudo dpkg -i ./libcudnn7-dev_7.5.1.10-1+cuda10.0_amd64.deb sudo dpkg -i ./libcudnn7-doc_7.5.1.10-1+cuda10.0_amd64.deb
4.2 壓縮包安裝:cudnn-10.0-linux-x64-v7.5.1.10.tgz
解壓該壓縮包,獲得一個 cudnn 文件夾,該文件夾下include 和 lib64 兩個文件夾,命令行進入 cudn/include 路徑下,而後進行如下操做:
sudo cp cudnn.h /usr/local/cuda/include/ #複製頭文件
而後命令行進入 cudn/lib64 路徑下,運行如下命令:
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ sudo chmod a+r /usr/local/cuda/include/cudnn.h sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
在終端輸入命令:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
若是出現下圖所示版本信息,說明安裝成功。
#define CUDNN_MAJOR 7 #define CUDNN_MINOR 5 #define CUDNN_PATCHLEVEL 1 -- #define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL) #include "driver_types.h"
五、opencv安裝
因爲裝了ros系統,自動裝了oepncv不須要編譯安裝。
六、安裝OpenBLAS
一、先下載git,而後安裝OpenBLAS
mkdir ~/git cd ~/git git clone https://github.com/xianyi/OpenBLAS.git cd OpenBLAS sudo apt-get install gfortran make FC=gfortran -j $(($(nproc) + 1)) sudo make PREFIX=/usr/local install
二、添加lib庫的變量路徑
echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
七、安裝caffe
安裝的路徑下 clone caffe代碼 :
git clone https://github.com/BVLC/caffe.git
完成後進入caffe-master,進入 caffe ,將 Makefile.config.example 文件複製一份並改名爲 Makefile.config ,執行下列命令完成複製操做 :
sudo cp Makefile.config.example Makefile.config
複製一份的緣由是編譯 caffe 時須要的是 Makefile.config 文件,而Makefile.config.example 只是caffe 給出的配置文件例子,不能用來編譯 caffe。
而後修改 Makefile.config 文件,在 caffe 目錄下打開該文件:
sudo gedit Makefile.config
修改 Makefile.config 文件內容:
7.1 應用 cudnn
將 #USE_CUDNN := 1 修改爲: USE_CUDNN := 1
7.2 應用 opencv 版本
將 #OPENCV_VERSION := 3 修改成: OPENCV_VERSION := 3
7.3 使用 python 接口
將 #WITH_PYTHON_LAYER := 1 修改成 WITH_PYTHON_LAYER := 1
7.4 修改 python 路徑
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
7.5 若是安裝了OpenBLAS,修改BLAS參數
sed -i 's/BLAS := atlas/BLAS := open/' Makefile.config
7.6 修改 caffe 目錄下的 Makefile 文件
將: NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS) 替換爲: NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
再修改
將: LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5 改成: LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
7.7 編譯
在 caffe 目錄下執行 :
sudo make all -j4
7.8 編譯成功後可運行測試:
sudo make runtest -j4
表示編譯安裝成功
八、安裝 pycaffe notebook 接口環境
成功安裝 caffe 以後,就能夠經過 caffe 去作訓練數據集或者預測各類相關的事了,只不過須要在命令行下經過 caffe 命令進行操做,而這一步 pycaffe 的安裝以及 notebook 環境配置只是爲了更方便的去使用 caffe ,實際上大多數都是經過 python 來操做 caffe 的,而 notebook 使用瀏覽器做爲界面,能夠更方便的編寫和執行 python 代碼。
首先編譯 pycaffe :
cd caffe sudo make pycaffe -j4
配置notebook環境
首先要安裝python接口依賴庫,在caffe根目錄的python文件夾下,有一個requirements.txt的清單文件,上面列出了須要的依賴庫,按照這個清單安裝就能夠了。
在安裝scipy庫的時候,須要fortran編譯器(gfortran),若是沒有這個編譯器就會報錯,所以,咱們能夠先安裝一下。
首先進入 caffe
/python 目錄下,執行安裝代碼:
sudo apt-get install gfortran for req in $(cat requirements.txt); do sudo pip install $req; done
安裝完成之後執行:
sudo pip install -r requirements.txt
就會看到,安裝成功的,都會顯示Requirement already satisfied, 沒有安裝成功的,會繼續安裝。
而後安裝 jupyter :
sudo pip install jupyter
安裝完成後運行 notebook :
jupyter notebook
或
ipython notebook
就會在瀏覽器中打開notebook。
九、安裝過程遇到的坑
8.一、編譯時,提示以下錯誤
nvcc fatal : Unsupported gpu architecture 'compute_20' nvcc fatal : Unsupported gpu architecture 'compute_20' Makefile:605: recipe for target '.build_release/cuda/src/caffe/util/math_functions.o' failed
緣由是cuda版本不兼容,在Makefile.config 中 CUDA_ARCH 設置沒有去掉不兼容的arch,根據提示:
# CUDA architecture setting: going with all of them. # For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility. # For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility. # For CUDA >= 9.0, comment the *_20 and *_21 lines for compatibility. CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \ -gencode arch=compute_20,code=sm_21 \ -gencode arch=compute_30,code=sm_30 \ -gencode arch=compute_35,code=sm_35 \ -gencode arch=compute_50,code=sm_50 \ -gencode arch=compute_52,code=sm_52 \ -gencode arch=compute_60,code=sm_60 \ -gencode arch=compute_61,code=sm_61 \ -gencode arch=compute_61,code=compute_61
電腦cuda爲10.0,因此須要刪除
-gencode arch=compute_20,code=sm_20 \ -gencode arch=compute_20,code=sm_21 \ 以後編譯成功
8.二、cuda庫找不到
.build_release/tools/caffe .build_release/tools/caffe: error while loading shared libraries: libcudart.so.10.0: cannot open shared object file: No such file or directory Makefile:543: recipe for target 'runtest' failed make: *** [runtest] Error 127
解決方法:
將相應的庫文件複製到/usr/lib,終端運行以下命令:
sudo cp /usr/local/cuda-10.0/lib64/libcudart.so.10.0 /usr/local/lib/libcudart.so.10.0 && sudo ldconfig sudo cp /usr/local/cuda-10.0/lib64/libcublas.so.10.0 /usr/local/lib/libcublas.so.10.0 && sudo ldconfig sudo cp /usr/local/cuda-10.0/lib64/libcurand.so.10.0 /usr/local/lib/libcurand.so.10.0 && sudo ldconfig
ps. ldconfig命令是一個動態連接庫管理命令,是爲了讓動態連接庫爲系統共享
8.4 編譯 pycaffe時報錯:fatal error: numpy/arrayobject.h沒有那個文件或目錄
python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: 沒有那個文件或目錄
python2已經安裝了numpy,但仍是報這個錯誤
進入python2
import numpy as np
np.get_include()
獲得:
/usr/local/lib/python2.7/dist-packages/numpy/core/include 在Makefile.config找到PYTHON_INCLUDE,發現有點不一樣: PYTHON_INCLUDE := /usr/include/python2.7 \ /usr/lib/python2.7/dist-packages/numpy/core/include 要加一個local,變成: PYTHON_INCLUDE := /usr/include/python2.7 \ /usr/local/lib/python2.7/dist-packages/numpy/core/include
再make pycaffe就ok了
8.5 import caffe時
ImportError:No module named skimage.io
解決辦法:
多是咱們沒有安裝所謂的skimage.io模塊,因此能夠用如下的命令來安裝:
pip install scikit-image
關掉終端,從新進入再編譯
或者:
sudo pip install scikit-image
另外一種方法:
sudo apt-get install python-skimage
8.6 導入 caffe 時出現錯誤:
File "<stdin>", line 1, in <module> ImportError: No module named caffe
解決方法:
sudo echo export PYTHONPATH="~/caffe-master/python" >> ~/.zshrc
source ~/.zshrc
在python2中導入caffe
8.4 python3使用caffe
raceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/wyl/caffe/python/caffe/__init__.py", line 1, in <module> from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer File "/home/wyl/caffe/python/caffe/pycaffe.py", line 13, in <module> from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, \ ImportError: dynamic module does not define module export function (PyInit__caffe)