64位Win7下安裝並配置Python3的深度學習庫:Theano


  

 注:本文全原創,作者:Noah Zhang  (http://www.cnblogs.com/noahzn/)

 

  這兩天在安裝Python的深度學習庫:Theano。嘗試了好多遍,CMake、MinGW、BLAS、APLACK等等都裝了試着自己編譯,網上教程也搜了一大堆,但都沒成功。昨晚回家清理干凈電腦,又小心翼翼地裝了一遍,成功,今天來公司又裝了一遍,也成功,現把步驟記錄如下:

 

  (注:本步驟適用於WIN7 64位操作系統,Python版本為3.4.3 64bit)

  1. 請將電腦清理干凈。包括之前裝的MinGW、Python等的環境變量。

  2. 安裝:Microsoft Windows SDK for Windows 7 and .NET Framework 4。鏈接: http://pan.baidu.com/s/1o6uYbTC 密碼: iy4c

  3. 安裝:CUDA5.5。鏈接: http://pan.baidu.com/s/1bnuE4z1 密碼: p9r4

  4. 安裝:GCC。鏈接: http://pan.baidu.com/s/1jGou7MQ 密碼: zvsx

    (注意:安裝的時候,勾選安裝“openmp”,不要勾選“add to PATH”)

    

  

  5. 安裝完GCC后,把“D:\TDM-GCC-64\bin”和“D:\TDM-GCC-64\x86_64-w64-mingw32”加入環境變量。(注意:我這里是裝在D盤的,大家根據自己的安裝路徑更改哦)

  6. 安裝WinPython。如果使用原生Python的話,還要安裝BLAS(基礎線性代數程序集),自己安裝實在太麻煩了,之所以選用WinPython發行包是因為它可以自己鏈接MKL庫,就不用我們自己編譯安裝BLAS了,而且自帶了諸如cxfreeze、numpy、scipy、nltk、PyQt4等幾十個常用的庫。鏈接: http://pan.baidu.com/s/1kTimVIJ 密碼: yc78

  檢驗numpy等庫是否使用了blas加速,可以在python中輸入:

import numpy
id(numpy.dot) == id(numpy.core.multiarray.dot)

  如果結果是:False,則表明實現了BLAS加速。

  

  7. 創建GCC鏈接庫。cmd下cd到安裝WinPython的磁盤根目錄,執行:

gendef WinPython-64bit-3.4.3.2\python-3.4.3.amd64\python34.dll

dlltool --dllname python34.dll --def python34.def --output-lib WinPython-64bit-3.4.3.2\python-3.4.3.amd64\libs\libpython34.dll.a

  

  8. 安裝Theano。官方推薦用git安裝,我試過了,還是自己手動安裝吧…把下載的“Theano-0.7.0-py3-none-any.whl”文件放到“\WinPython-64bit-3.4.3.2\python-3.4.3.amd64\Lib\site-packages”下,執行WinPython目錄下的"WinPython Command Prompt.exe",cd到site-packages目錄,輸入:pip install Theano-0.7.0-py3-none-any.whl。

  鏈接: http://pan.baidu.com/s/1dDvWuGD 密碼: nye6

  

  # 2015.05.20更新:

  # 推薦大家使用開發版的theano,官方解釋是修復了海量BUG…

  # 先下載git for windows, 鏈接: http://pan.baidu.com/s/1o6omEs6 密碼: ayi6

  # 然后進入site-packages文件夾,右鍵:Git Bash Here,輸入:git clone https://github.com/Theano/Theano.git

  # 然后切到theano文件夾里安裝一下即可:python setup.py install

 

 

  9. 配置Theano。在WinPython目錄下的settings文件夾內創建一個文件“.theanorc.txt”,在里面輸入:

[global]
floatX = float32
device = gpu

[cuda]
root = D:\cuda5.5\bin

    (注意:這里的cuda目錄根據你的安裝路徑自行調整。)

  10. 重啟電腦。(重要)

  11. 測試是否安裝成功。打開IDLE,鍵入官方的測試代碼(官方的代碼是基於Python2寫的,我已經改成了Python3可執行的代碼):

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([], sandbox.cuda.basic_ops.gpu_from_host(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)
print('Numpy result is', numpy.asarray(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')

  如果成功的話,會顯示類似下面的信息:

>>> 
Using gpu device 0: GeForce 605
[GpuElemwise{exp,no_inplace}(<CudaNdarrayType(float32, vector)>)]
Looping 1000 times took 0.48799991607666016 seconds
Result is <CudaNdarray object at 0x0000000006805F70>
Numpy result is [ 1.23178029  1.61879349  1.52278066 ...,  2.20771813  2.29967761
  1.62323296]
Used the gpu

  嗯…公司電腦顯卡是Geforce 605……

 

  這樣就大功告成了,我自己在摸索安裝時,遇到了各種錯誤信息,大家有碰到什么問題可以留言,或許我知道如何解決……


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM