第一節,windows和ubuntu下深度學習theano環境搭建

先講解windows下深度學習環境的搭建

步驟一  安裝Anaconda

Anaconda是一個用於科學計算的python發行版,支持linux,mac,windows系統,提供了包管理和環境管理的功能,Anaconda是一個打包的集合,裏面裝好了conda,某個版本的python,衆多的packages等,科學計算工具等html

下載中科大鏡像:http://mirrors.ustc.edu.cn/python

 

 從archive路徑下載Anaconda3-4.2.0-Windows-x86_64.exelinux

個人安裝路徑爲 D:\Program Files (x86)\Anaconda,注意這裏我選擇的是3-4.2.0版本。git

 

步驟二  安裝minGw,libpython

進入Anaconda Prompt命令窗口,輸入命令github

conda install mingw libpython

中間會要你選擇Proceed([y]/n)? 輸入yshell

此處安裝若是比較慢或者有問題能夠參考:手把手教你搭建深度學習平臺——避坑安裝theano+CUDA  http://www.javashuo.com/article/p-wjuwaylu-eu.htmlnpm

配置環境變量  計算機->屬性->高級系統設置->環境變量編程

編輯系統變量‘path’,追加D:\Program Files (x86)\Anaconda\MinGW\x86_64-w64-mingw32\lib;D:\Program Files (x86)\Anaconda\MinGW\bin;ubuntu

 

步驟三 安裝theano

進入Anaconda Prompt命令窗口,輸入命令:windows

conda install theano pygpu

若是安裝失敗,咱們先卸載,而後在嘗試從新安裝

conda uninstall theano
conda  install theano

 

新建環境變量‘PYTHONPATH’:添加值D:\Program Files (x86)\Anaconda\Lib\site-packages\theano;(這個路徑添加了運行spyder可能出錯(打不開),親測)

若是你的電腦沒有GPU,安裝到這裏就能夠了,下面的步驟不用安裝。

步驟四 PTVS安裝以及VS環境變量設置

安裝完成以後,咱們須要爲VS安裝PTVS。適用於Visual Studio的Python工具(PTVS)是Visual Studio的開源插件,支持使用Python語言進行編程。

具體安裝咱們能夠參考:在 Windows 上的 Visual Studio 中安裝 Python 支持

因爲我在以前安裝的Anconda,自帶的是python3.5.2,並且我安裝的visual studio2015,因此能夠直接安裝Python解釋器。

若是你使用的是visual studio2013,這裏就有個問題(vs2015的能夠跳過):

若是你安裝的是python3.6,因爲vs2013不支持python3.6。所以,你須要從新安裝python版本,這裏能夠選擇安裝python3.5。若是你是vs2015以後的版本,你能夠跳過這裏。

咱們能夠參考文章:如何將Anaconda更新到想要的python版本

對於vs2013,咱們能夠卸載Anaconda,從新安裝一個帶有python3.5的版本(好比Anaconda3-4.0.0,我建議重裝)。或者使用conda命令在線更新。從新安裝比較簡單,我就介紹一下使用conda命令更新。

打開Anaconda Prompt,而後用conda命令更新到python3.5.

conda update conda ——等待更新完,而後輸入如下命令,這個較快

#建立一個名爲python35的環境,指定Python版本是3.5(不用管是3.5.x,conda會爲咱們自動尋找3.5.x中的最新版本)

conda create --name python34 python=3.5

activate python35 --激活3.5版本,使用這個

#此時次輸入

python --version

#能夠獲得`Python 3.5.5 即系統已經切換到了3.5的環境

#若是想返回默認的python 3.6.2環境,運行

deactivate python35

#刪除一個已有的環境

conda remove --name python35 --all

等待python3.5安裝成功。這裏我須要從新執行步驟2 安裝minGw,libpython,和步驟三安裝theano。

而後須要去下載PTVS插件並安裝:Visual Studio 2013 PTVS 2.2

若是你是VS2015或者之後的版本,具體安裝以及VS環境變量的配置比較簡單你能夠參考:在 Windows 上的 Visual Studio 中安裝 Python 支持

而後須要手標識現有環境,打開vs2013.新建一個python項目,並對該項目以下操做:

 

而後選擇python 3.5.

 

步驟五 配置路徑文件

找到路徑C:\Users\你的用戶名,在下面建立文件.theanorc.txt

此處我在C:\Users\Administrator路徑下建立了.theanorc.txt文件

編輯文件輸入內容

[global]

openmp=False [blas] Idflags= [nvcc] fastmath=True flags =-LD:\Program Files (x86)\Anaconda\libs compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin [gcc] cxxflags=-ID:\Program Files (x86)\Anaconda\MinGW

注意標紅的路徑是根據你本身的MinGW來設置的,不須要和個人同樣,上面的:

compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin  

若是你的電腦是裝vs2012,那麼就把10.0改成11.0。這個也就是你安裝的vs所在的目錄。

步驟六 測試配置文件是否有誤

(1)測試方案一
進入python的shell腳本,輸入內容:
>>> import theano
>>> theano.test()
 
查看運行結果是否正確。若是出現錯誤,請查看是不是如下幾種錯誤:

出現這種錯誤 ,或者咱們在命令窗口執行spyder也出現以下問題:

針對configparse問題,咱們能夠參考文章:

python安裝配置Theano ImportError:cannot import name 'configparser'

咱們清除安裝theano時的路徑配置,即:新建環境變量‘PYTHONPATH’:添加值D:\Program Files (x86)\Anaconda\Lib\site-packages\theano;而後從新嘗試運行

若是import theano出現pygpu相關的錯誤,能夠嘗試運行(若是你已經安裝了CUDU可能會出現這種問題):

conda install pygpu

打開spyder進行測試,若是還有spyder閃退的問題,能夠嘗試從新安裝:

conda uninstall spyder        #先卸載
conda install spyder #在安裝

若是仍是不行,你能夠到網上搜索其餘解決方案,或者從新換個版本的Anaconda安裝。

(2)測試方案二
咱們也能夠編輯以下代碼測試
import numpy as np import time import theano A = np.random.rand(1000,10000).astype(theano.config.floatX) B = np.random.rand(10000,1000).astype(theano.config.floatX) np_start = time.time() AB = A.dot(B) np_end = time.time() X,Y = theano.tensor.matrices('XY') mf = theano.function([X,Y],X.dot(Y)) t_start = time.time() tAB = mf(A,B) t_end = time.time() print("NP time: %f[s], theano time: %f[s] (times should be close when run on CPU!)" %( np_end-np_start, t_end-t_start)) print ("Result difference: %f" % (np.abs(AB-tAB).max(), ))

測試結果以下:

若是上面的np time 和theano time 差很少,那就表明你上面的配置沒有問題了,這個有的時候電腦還有其餘的任務,也有可能致使運行的時間不一致。

步驟七 安裝cuda

關於theano以及cuda的安裝參考教程
深度學習(二)theano環境搭建
windows下theano開發環境搭建(實現了GPU加速)

先檢查本身的顯卡支持什麼版本的CUDA

(1)首先打開控制面板,在控制面板進行搜索。

(2)而後,雙擊NVIDIA控制面板,打開以下的控制面板,點擊幫助

點擊系統信息,咱們會看到

(3)選擇組件,而後會看到紅色框的內容,箭頭所指的CUDA版本,就是你電腦支持的CUDA版本。

而後咱們去官網下載咱們顯卡支持的CUDA版本

 

 

 程序下載完後後,雙擊安裝:

到這一步,問題出現了,告訴我說圖形驅動與顯卡不兼容,若是繼續安裝,即便安裝成功了,也不能使用cuda。所以我去下載一個比較新的CUDA,我下載了cuda_8.0.61_windows.exe(注意下面我使用的是cuda9.0的截圖,可是事實證實在個人電腦安裝9.0後,gpu運行不了,這裏你最好安裝cuda8.0,步驟同下)。

 

選擇自定義安裝,而後把全部包的都勾選上,省的後面出現什麼錯誤。這一步有可能會遇到驅動衝突,致使某些包安裝失敗

若是某些包安裝失敗,後面使用theano的時候,會跳出錯誤。若是圖形驅動安裝失敗,運行theano的時候就出現錯誤,提示爲cuda版本與驅動版本不一致。所以若是你安裝cuda的過程當中,有出現安裝失敗的,那麼請你接着往下看。安裝失敗通常是驅動衝突的問題,這個時候個人方法是用驅動精靈卸載掉顯卡驅動,而後在進行安裝。

 安裝完後測試一下是否安裝正確。在命令窗口輸入:

nvcc -V

回車查看是否有版本信息。若出現版本信息,則證實nvcc安裝成功,以下圖所示:

 

接着咱們運行一個cuda自帶的測試例子。

 

因爲個人電腦安裝了VS2015(這個本身下載安裝),因此在這裏打開Samples_vs2015.sln項目,這個例子目錄爲:C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0(在安裝完咱們勾選launch samples會自動打開這個文件夾) 。編譯運行獲得以下結果,表示安裝成功:

安裝完了cuda,你還須要cuDNN:

cuDNN下載地址https://developer.nvidia.com/rdp/cudnn-download,cuda8.0對應的版本是cudnn-8.0-windows7-x64-v6.0.zip

咱們須要把下面三個文件中對應的文件拷貝到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0路徑對應的文件下。

而後咱們須要從新配置.theanorc.txt文件

[blas]   
ldflags= [global] device = gpu floatX = float32 
[cuda]
root = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0 [nvcc] fastmath=True flags =-LD:\Program Files (x86)\Anaconda\libs compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin [gcc] cxxflags = -ID:\Program Files (x86)\Anaconda\MinGW

這樣就完成了theano的GPU配置了。

步驟八 完整測試

測試時,執行以下程序(詳細內容能夠參考官方連接:http://deeplearning.net/software/theano/tutorial/using_gpu.html)

from theano import function, config, shared, tensor import numpy import time vlen = 10 * 30 * 768 # 10 x #cores x # threads per core iters = 1000 rng = numpy.random.RandomState(22) x = shared(numpy.asarray(rng.rand(vlen), config.floatX)) f = function([], tensor.exp(x)) print(f.maker.fgraph.toposort()) t0 = time.time() for i in range(iters): r = f() t1 = time.time() print("Looping %d times took %f seconds" % (iters, t1 - t0)) print("Result is %s" % (r,)) if numpy.any([isinstance(x.op, tensor.Elemwise) and ('Gpu' not in type(x.op).__name__) for x in f.maker.fgraph.toposort()]): print('Used the cpu') else: print('Used the gpu')

運行結果以下:

(1)GPU測試

下面是用GPU加速的運行結果:

 

 如上運行結果可知,用gpu進行計算時間差很少是0.68秒左右。若是想切換成只用gpu的測試的話,我是經過更改文件:.theanorc.txt的內容。那麼.theanorc.txt的內容爲:

[blas]   
ldflags=

[global]
device = cuda
floatX = float32
optimizer = None

[cuda]
root = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0

[nvcc] fastmath=True flags =-LD:\Program Files (x86)\Anaconda\libs compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin [gcc] cxxflags = -ID:\Program Files (x86)\Anaconda\MinGW

(2)CPU測試。

若是想關閉gpu,進行cpu測試那麼就把.theanorc.txt內容改成:

[blas]   
ldflags= [gcc] cxxflags = -ID:\Program Files (x86)\Anaconda\MinGW

重啓電腦或者重啓spyder內核。下面是測試結果圖:

 

測試告終果,只用cpu花了14秒的時間,也就是說對於個人電腦,使用gpu進行加速,這速度提升了近20倍。

(1)若是執行import theano出現

'You are tring to use the old GPU back-end. '

ValueError: You are tring to use the old GPU back-end. It was removed from Theano. Use device=cuda* now. See Theano/Theano for more information.

咱們能夠經過修改.theanorc.txt文件  把device=gpu更改成device=cuda

[global]
device = cuda floatX = float32 optimizer = None 

(2)若是運行出現下面錯誤:

咱們能夠配置.thranorc.txt文件,忽略cuDNN

[dnn]
enabled = False

(3)若是出現CVM未定義的錯誤,按照下面方法移除該文件夾是能夠起做用的(親測)。

 

 (4)執行出現MKL_THREADING_LAYER=GNU錯誤

咱們使用以下命令:

conda install mkl=2017

若是這些方法都不能解決這些錯誤,我只能推薦你看一下這篇文章,但願可以對你有幫助

這是一份大家須要的Windows版深度學習軟件安裝指南 

步驟九 安裝tensorflow

一、cpu環境

若是你使用cpu,那麼在命令窗口下運行:

conda install tensorflow

二、gpu環境

若是你使用gpu, 安裝TensorFlow指定版本(清華源上有的,更換連接最後的版本名稱就好了),那麼在命令窗口下運行:

pip install --upgrade https://mirrors.tuna.tsinghua.edu.cn/tensorflow/windows/gpu/tensorflow_gpu-1.3.0rc0-cp35-cp35m-win_amd64.whl

測試
import tensorflow as tf (1)print(tf.test.gpu_device_name()) 或者 (2)print(tf.test.is_gpu_available()) 若是(1)輸出device:/gpu:0或者(2)輸出True,則代表使用的GPU

在linux環境下安裝以下

步驟一  安裝Anaconda

Anaconda是一個用於科學計算的python發行版,支持linux,mac,windows系統,提供了包管理和環境管理的功能,Anaconda是一個打包的集合,裏面裝好了conda,某個版本的python,衆多的packages等,科學計算工具等

下載中科大鏡像:http://mirrors.ustc.edu.cn/

 

 從archive路徑下載Anaconda3-5.0.1-linux-86_64.sh

在home文件夾下建立一個文件夾,命名爲Anaconda,把下載好的程序複製到這裏,而後右鍵在終端打開,輸入:

bash Anaconda3-5.0.1-Linux-x86_64.sh

而後按下enter鍵繼續安裝,一直按enter鍵,直至:

而後按下yes繼續安裝,後面選擇安裝路徑,我是安裝在當前文件夾下的program文件夾下:

執行到這裏說明已經安裝成功

步驟二 安裝cuda

1.首先確保本身的操做系統是最新的,打開終端運行如下命令

sudo apt-get update sudo apt-get upgrade sudo apt-get install build-essential sudo apt-get autoremove

而後安裝git,在終端輸入

sudo apt-get install git

2.首先檢驗本身的電腦是否支持CUDA,而後安裝NVIDIA驅動

首先查看顯卡型號,在終端輸入

lspci | grep -i nvidia

執行結果以下

  • 到Nvidia官網查找你顯卡對應的最新驅動和系統設置。你能夠今後網站上下載並安裝驅動,但這樣作會升級到更新的驅動,而且卸載的時候會有些麻煩。此外,這麼作須要你退出X服務會話,從終端進行安裝,這比較麻煩。

  • 咱們將使用apt-get來安裝驅動。到 「Proprietary GPU Drivers」 PPA中查看是否有你最新的驅動。注意,最新的驅動必定是最穩定的。你也能夠安裝網頁上推薦的驅動版本。添加」Proprietary GPU Drivers」 PPA 資源庫。在寫這篇文章的時候,最新版本是396.18,然而推薦版本是390.48:

  •  

在終端輸入

sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt-get update sudo apt-get install nvidia-390

從新啓動系統

sudo shutdown -r now

檢查以確保安裝了正確版本的NVIDIA驅動

cat /proc/driver/nvidia/version

 也能夠重啓後輸入以下命令

nvidia-smi

若是顯示GPU信息,則代表驅動程序安裝成功。 也能夠經過nvidia-settings查看GPU的信息。

若安裝失敗,卸載未安裝成功的顯卡驅動,再從新安裝

sudo apt-get remove --purge nvidia-*                   #卸載顯卡驅動 

3.CUDA安裝

首先去cuda官網下載cuda工具包。
操做系統選擇Linux,處理器架構選擇x86_64,發佈版選擇Ubuntu,版本選擇16.04,安裝類型選擇deb(local)。而後下載第一個:

而後切換到cuda工具包所在目錄下,執行以下命令(cuda的安裝路徑所有使用默認路徑):

sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb sudo apt-get update sudo apt-get install cuda

等待cuda安裝結束。若是安裝過程當中遇到內存不足的問題,執行以下命令

df -h 

咱們會看到根目錄/下內存不足,這主要是由於在安裝系統的時候我給根目錄只分配了10G,

當使用Linux系統的時候,發現根目錄(/)的空間不是很充足,而其餘目錄空間有很大的空閒,咱們須要針對如今已有的空間進行調整。

具體也能夠參考文章:Linux下調整根目錄的空間大小

 爲了不你在安裝時候,也出現這種問題,建議安裝時給/目錄分配30G以上的空間。

 安裝結束以後(有一個/usr/local/cuda的目錄連接到/usr/local/cuda-8.0,後面配置環境變量時可直接使用/usr/local/cuda目錄),配置環境變量: 能夠配置系統級別的環境變量,也能夠配置用戶級別的環境變量。 

配置系統級別的環境變量,請使用以下命令:

sudo vi /etc/profile

配置用戶級別的環境變量,請使用以下命令

vi ~/.bashrc

打開文件後,在文件的結尾部分添加以下文本行:

 export PATH=/usr/local/cuda/bin:$PATH
 export LD_LIBRARY_PATH=/usr/local/cude/lib64:$LD_LIBRARY_PATH

若是是配置用戶級別的環境變量,也能夠直接運行以下命令:

echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc

檢查以確保安裝了正確版本的CUDA

nvcc -V

重啓系統

sudo shutdown -r now

4.檢查CUDA安裝(可選)

在CUDA安裝目錄安裝樣例。編譯它們(須要幾分鐘):

/usr/local/cuda/bin/cuda-install-samples-8.0.sh ~/cuda-samples cd ~/cuda-samples/NVIDIA*Samples make -j $(($(nproc) + 1))

注意:(-j $(($(nproc) + 1)))命令使用你機器上的核心數並行執行,因此編譯會更快

  • 運行deviceQuery,確保它能檢測到顯卡並測試經過
bin/x86_64/linux/release/deviceQuery

5.cuDNN安裝

cuDNN是爲DNN設計的CPU加速庫。它能在多種狀況下幫助提高執行速度。爲了下載cuDNN庫,你須要到Nvidia網站https://developer.nvidia.com/cudnn上進行註冊。當即就可以批准。一旦註冊批准,下載Linux版本的cuDNN v7。

點開下圖中的cuDNN v7.1.2(Mar21.1018) for CUDA 8.0,而後選擇第一個下載。

如下命令請在cuDNN文件所在目錄執行。

tar -zxvf cudnn-8.0-linux-x64-v7.1.tgz 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*

以上命令就將cuDNN的頭文件、靜態庫和動態庫都放入了cuda目錄下。

 

最後,執行以下命令,以防在編譯Tensorflow或者其餘開源深度學習框架時找不到動態庫。

sudo ldconfig /usr/local/cuda/lib64

注:ldconfig命令的用途是在目錄/lib和/usr/lib以及動態庫配置文件/etc/ld.so.conf內所列的目錄中,搜索出可共享的動態連接庫(格式如lib*.so*),進而建立出動態裝入程序(ld.so)所需的鏈接和緩存文件。

6.theano安裝

打開終端輸入:

conda install theano-gpu

 若是安裝有問題,參考官網進行安裝:http://www.deeplearning.net/software/theano/install_ubuntu.html#stable-installation

conda install theano pygpu
conda install mkl=2017

7.配置.theanorc.txt文件

需配置.theanorc以便使用gpu
sudo gedit ~/.theanorc
輸入一下內容
[global]
floatX=float32 device=cuda [cuda] root=/usr/local/cuda-8.0 [nvcc] flags=-D_FORCE_INLINES fastmath=True

8.測試安裝

測試時,執行以下程序(詳細內容能夠參考官方連接:http://deeplearning.net/software/theano/tutorial/using_gpu.html)

from theano import function, config, shared, tensor
import numpy
import time

vlen = 10 * 30 * 768  # 10 x #cores x # threads per core
iters = 1000

rng = numpy.random.RandomState(22)
x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
f = function([], tensor.exp(x))
print(f.maker.fgraph.toposort())
t0 = time.time()
for i in range(iters):
    r = f()
t1 = time.time()
print("Looping %d times took %f seconds" % (iters, t1 - t0))
print("Result is %s" % (r,))
if numpy.any([isinstance(x.op, tensor.Elemwise) and
              ('Gpu' not in type(x.op).__name__)
              for x in f.maker.fgraph.toposort()]):
    print('Used the cpu')
else:
    print('Used the gpu')

在cpu或者是在gpu上運行能夠經過修改.theanorc文件中爲device = cpu或者device = cuda來決定。每次修改以後,只有重啓spyder內核或者重啓電腦纔會生效。

GPU下運行以下:

 

步驟三 安裝tensorflow

在終端下運行

conda install tensorflow
conda install tensorflow-gpu
測試
import tensorflow as tf
(1)print(tf.test.gpu_device_name())

或者
(2)print(tf.test.is_gpu_available())

若是(1)輸出device:/gpu:0或者(2)輸出True,則代表使用的GPU

參考文章:

[1]深度學習環境搭建

[2]Linux安裝Anaconda和cuda、cdnn和Tensorflow-gpu

[3]win10下經過Anaconda安裝TensorFlow-GPU1.3版本,並配置pycharm運行Mnist手寫識別程序(或者使用這個安裝)

相關文章
相關標籤/搜索