手把手教你搭建深度學習平臺——避坑安裝theano+CUDA

python有多混亂我就很少說了。這個混論不只是指整個python市場混亂,更混亂的還有python的各類附加依賴包。爲了一勞永逸解決python的各類依賴包對深度學習形成的影響,本文中採用 python的發行版Anaconda。
Step1 安裝Anaconda
這裏不建議使用python3.4之後的Anaconda版本,由於太新的版本(python3.5)不支持python/matlab混合編程.因此爲了之後方便,建議使用python2.7的Anaconda版本。Anaconda安裝完成後,numpy和scipy等百餘個常見的依賴包自動安裝完成。anaconda路徑自動在環境變量中添加。
Step2 安裝minGW,libpython
網上建議的下載minGW基本就是扯淡,由於下載minGW麻煩不說,文件找不到,路徑還要本身配。這裏給一個超級方便的方法。在未下載minGW和libpython的狀況下,在線安裝。固然這要求你的電腦要聯網。首先打開命令行窗口,在 命令行窗口(看清楚我說的是命令行窗口不是python的shell腳本)輸入命令以下:
 
conda install mingw libpython
 
中間會要你選擇Proceed([y]/n)? 固然要選y了。輸入y,而後按回車鍵。若是幸運的話,你的電腦會一溜煙安裝完。惋惜至關一部分人並不幸運,他們會發現一個蛋疼的問題——文件在線下一半不下了,要麼就是網速慢成狗。也難怪,誰讓這條命令須要連接境外的服務器呢,拜某牆所賜纔會下的這麼慢。不要急,有辦法。若是你已經下了一半,而後卡成了狗。請遵照如下步驟:
(1)狠下心關掉文件下載了一多半的命令行窗口。
(2)從新打開命令行窗口
(3)輸入命令
          conda clean --lock
        輸完上述命令後會蹦出一行提示:removing (你的home路徑)\Anaconda2\pkgs\.conda_lock-1056
        若是你不輸入這個命令直接輸入 conda install mingw libpython的話,你會發現系統不給裝,由於有文件殘留的緣由。他會認爲你要下載的minGW和libpython已經存在了(剛纔下過了,只不過是殘的)。
(4)輸入命令
          conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
          conda config --set show_channel_urls yes
         第一句話的意思是告訴conda命令等會你別往境外找了,就找我給你的這個地址就能夠了。這個是清華大學的anaconda免費package文件服務器
         第二句話的意思是告訴conda命令,讓我看看你的url對不對(這句話執行後有可能不顯示,這是正常的,不用急)
(5)輸入命令
          conda install mingw libpython  
 作完以上步驟後就會出現這個界面:

這就說明是裝好了。python

而後再環境設置的路徑裏看一下是否是有mingw的路徑了。沒有的添加一下。 ;C:\Users\Marijuana\Anaconda2\MinGW\bin;C:\Users\Marijuana\Anaconda2\MinGW\x86_64-w64-mingw32\lib
Step3 安裝theano
這裏也是無需下載直接安裝, 命令行裏輸入命令
 
pip install theano
 
界面是這樣的:
 

theano安裝完成後能夠在Anaconda2\Lib\site-packages\theano文件夾下找到theano的文件夾。而後不要忘記將該路徑加入環境變量中,在個人電腦中路徑以下:shell

;C:\Users\Marijuana\Anaconda2\Lib\site-packages\theano
Step4 配置路徑文件
第一步,在你的電腦User目錄下找到你的用戶文件夾,個人登錄用戶名是Marijuana,而後在C:\Users\Marijuana下新建文本文檔,此時果斷不要更名
第二步,在新建文本文檔中輸入以下命令:
[global]
openmp=False
[blas]
Idflags=
[gcc]
cxxflags=-I C:\Users\Marijuana\Anaconda2\MinGW
注意標紅的路徑是根據你本身的MinGW來設置的,不須要和個人同樣
第三步,保存,改文本文檔的名字爲 .theanorc.txt(注意theano前還有一個點)
最後一步,重啓電腦
Step5 theano測試
從cmd進入python的shell腳本
輸入以下指令:
>>> import theano
>>> theano.test()
而後靜靜等待測試完成。通過漫長的等待以後或許你的顯示以下:
看到errors=0 failures=0,你就能夠肯定你成功了。可是你的也有多是這樣:
 
 
SKIP=26,errors=80,那就是說,失敗了。仔細查找看顯示出的信息:
 
彷佛全部的錯誤都是同一個: ERROR: Failure: ImportError (No module named nose_parameterized)   錯誤的意思是:沒有名叫nose_parameterized的模塊
 
解決方法就是:安裝名爲nose_parameterized的模塊,在命令提示符的窗口下輸入以下代碼:
pip install nose_parameterized 
而後再進入python的shell腳本界面,從新輸入
>>> import theano
>>> theano.test()
通過漫長的等待,能夠看到咱們成功的測試結果
 
基於CUDA+NVIDIA的GPU加速配置
Step1 安裝Visual Studio
我我的推薦Win10+VS2012或者是Win7+VS2010,固然其餘的選擇也大略如此,並不用太糾結。可是千萬要注意: 不要用Visual Studio 2015!!!由於兼容性問題
首先,在微軟的官網上下載Visual Studio,這裏我下載的是 VS2012.所有安裝完成後須要輸入密鑰,密鑰是 RBCXF-CVBGR-382MK-DFHJ4-C69G8
其次,在CUDA的官網上下載CUDA。個人是Win10的系統,因爲顧慮版本兼容性問題,我選用的是較新的版本CUDA7.0,可是後來來看彷佛版本對CUDA的影響不是太大。CUDA安裝不須要密鑰。CUDA安裝好後,若是安裝正確,環境變量裏面會多出兩個變量(不是path裏面多兩個路徑),CUDA_PATH_V7_0和CUDA_PATH
而後從新打開 命令行界面,輸入
nvcc -V
若是可以顯示版本信息(以下)就是正確安裝:
最後一步:從新配置 .theanorc.txt文件
[global]
openmp=False
device=gpu
floatX=float32
allow_input_downcast=True
[blas]
ldflags=
[gcc]
cxxflags=-IC:\Users\Marijuana\Anaconda2\MinGW
[nvcc]
flags=-LC:\Users\Marijuana\Anaconda2\libs
compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin
fastmath=True
flags=-arch=sm_30
一段Python代碼測試基於VS的CUDA加速在theano上是否應用成功
 
Spyder是一個Python的集成編輯器,Spyder的介紹請參見附錄D Spyder接口大法,Spyder打開後界面以下,而後將代碼粘入以下框體
 
 
from theano import function, config, shared, sandbox

import theano.tensor as T

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([], T.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' % iters, t1 - t0, 'seconds')

print ('Result is', r)

if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):

    print ('Used the cpu')

else:

    print ('Used the gpu')

 

 
而後點擊工具欄中的綠三角運行程序,固然你須要點選一個右下角的Console做爲輸出環境。個人代碼運行起來後輸出以下,從輸出來看,使用了gpu
runfile('C:/Users/Marijuana/.spyder2/temp.py', wdir='C:/Users/Marijuana/.spyder2')
DEBUG: nvcc STDOUT mod.cu
   ���ڴ����� C:/Users/Marijuana/AppData/Local/Theano/compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64/cuda_ndarray/cuda_ndarray.lib �Ͷ��� C:/Users/Marijuana/AppData/Local/Theano/compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64/cuda_ndarray/cuda_ndarray.exp
 
Using gpu device 0: GeForce 920M (CNMeM is disabled, cuDNN not available)
DEBUG: nvcc STDOUT mod.cu
   ���ڴ����� C:/Users/Marijuana/AppData/Local/Theano/compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64/tmpzarusg/97496c4d3cf9a06dc4082cc141f918d2.lib �Ͷ��� C:/Users/Marijuana/AppData/Local/Theano/compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64/tmpzarusg/97496c4d3cf9a06dc4082cc141f918d2.exp
 
INFO (theano.gof.compilelock): Refreshing lock C:\Users\Marijuana\AppData\Local\Theano\compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64\lock_dir\lock
DEBUG: nvcc STDOUT mod.cu
   ���ڴ����� C:/Users/Marijuana/AppData/Local/Theano/compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64/tmpfonthz/6174b19f8005a60d6a2faaae7ff1c9a7.lib �Ͷ��� C:/Users/Marijuana/AppData/Local/Theano/compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64/tmpfonthz/6174b19f8005a60d6a2faaae7ff1c9a7.exp
 
INFO (theano.gof.compilelock): Refreshing lock C:\Users\Marijuana\AppData\Local\Theano\compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64\lock_dir\lock
DEBUG: nvcc STDOUT mod.cu
   ���ڴ����� C:/Users/Marijuana/AppData/Local/Theano/compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64/tmpykz3yg/3c923ca60ec57848906002c5ee763565.lib �Ͷ��� C:/Users/Marijuana/AppData/Local/Theano/compiledir_Windows-10-10.0.10240-Intel64_Family_6_Model_78_Stepping_3_GenuineIntel-2.7.12-64/tmpykz3yg/3c923ca60ec57848906002c5ee763565.exp
 
[GpuElemwise{exp,no_inplace}(<CudaNdarrayType(float32, vector)>), HostFromGpu(GpuElemwise{exp,no_inplace}.0)]
('Looping 1000 times took', 2.11299991607666, 'seconds')
('Result is', array([ 1.23178029,  1.61879349,  1.52278066, ...,  2.20771813,
        2.29967761,  1.62323296], dtype=float32))
Used the gpu
 
若是這個程序可以裝好,說明你已經成功在python裏面裝載了theano,而且theano使用了CUDA平臺。

相關文章
相關標籤/搜索