Theano環境搭建/安裝


關鍵詞:theano安裝,搭建theano環境, python, 深度學習
因為需要安裝theano,結果發現這又是一個難以安裝的python包…雖然網上教程不少,然而魚龍混雜,試驗了各種方法流程,最后總算是弄好了,現在把我的過程總結如下:

安裝環境

  • 64位win7系統,顯卡:GT 730M,筆記本電腦;
  • 已安裝Visual Studio 2013 (都說VS2015太新不推薦);
  • 借助Anaconda來安裝theano,因為Anaconda已經集成了很多有用的python庫,如numpy、nose、scipy等,強烈推薦。

安裝Anaconda

安裝mingw

  • 安裝完之后,如果Anaconda目錄里沒有MinGW文件夾(據說這個跟Anaconda版本有關,有的版本會有,有的版本則沒有。由於折騰的步驟太多,我也不確定自己這個版本一開始有沒有),則通過如下方法安裝mingw:
  • 打開cmd,直接輸入Anaconda的安裝命令(為了避免干擾我已經卸載了系統里其他的python版本):
conda install mingw libpython
  • 安裝成功之后,Anaconda文件夾下就會出現MinGW文件夾。如果這個沒有裝好,運行測試時會提示存在g++問題。
  • 這一步並沒有下載其他亂七八糟的mingw安裝軟件,有很多教程是通過安裝mingw軟件來實現的。

安裝theano

  • 通過cmd直接運行以下命令(系統里有多個python版本的注意區分pip):
pip install theano
  • 不要用什么theano.zip解壓到目錄底下或者theano_installer_latest.msi之類的方法安裝。
  • 目前的theano版本:0.8.2

配置環境變量

  • 需要根據自己的安裝路徑來添加
  • 在PATH添加(這個在Anaconda安裝時可能已經設置了):
D:\Anaconda;D:\Anaconda\Scripts;
  • 新建變量PYTHONPATH:(用來指明theano的安裝目錄)
D:\Anaconda\Lib\site-packages\theano;
  • 在cmd的home目錄中新建 .theanorc.txt 文件(作為theano的配置文件,注意名字中的第一個“.”,如果已經存在,則直接修改該文件),設置如下內容:
    所謂cmd的home目錄:打開cmd時,在>前面的默認路徑:
    Theano環境搭建/安裝
[global] openmp=False [blas] ldflags = [gcc] cxxflags = -ID:\Anaconda\MinGW\include

theano測試

下面測試theano是否安裝成功:

  • 測試方法1
    用以下兩行代碼:
import theano print theano.config.blas.ldflags

Theano環境搭建/安裝
沒有出錯(沒有返回值)則說明已經配置成功。
其實單單是import theano不報錯就已經謝天謝地了。

  • 測試方法2
    或者用下面的指令測試(測試時會有其他錯誤提示或是warnings,但基本上還能運行的話則說明theano沒問題,錯誤提示可能是有些東西還沒安裝好):
import theano theano.test()

運行:
Theano環境搭建/安裝

例如我這里提示沒有nose-parameterized這個模塊,安裝方法:

pip install nose-parameterized

例如會提示PyCUDA的相關錯誤信息等。

注意:測試2必須在cpu下運行,在下面的GPU搭建中,如果配置了theano的device = gpu,則測試2就不能運行了。

  • 測試方法3
    通過驗證BLAS是否安裝成功:由於numpy是以來BLAS的,如果BLAS沒有安裝成功,雖然numpy也可以安裝,但是無法使用BLAS的加速。
    驗證numpy是否真的成功依賴BLAS編譯,用以下代碼測試:
import numpy
id(numpy.dot) == id(numpy.core.multiarray.dot)

如果結果為False,表示成功依賴了BLAS加速,如果是TRUE則表示用的是python自己的實現,並沒有加速。(我這里總是顯示TRUE,暫時不知道為什么,但是前面的測試又表明theano已經安裝成功)


使用GPU

上面的theano配置只是完成了上半部分,這個時候還不能進行gpu加速。如果使用GPU則需要繼續以下步驟:

CUDA安裝

  • 首先檢查自己的顯卡是否支持CUDA(顯卡至少是NVIDIA的),在如下網址查看具體是否支持:
  • 確定已經安裝Visual Studio
  • 下載對應自己系統版本的CUDA,我用的是CUDA Toolkit 7.5, win7 x86_64
  • 安裝的時候注意選自定義安裝,模塊全部選上,精簡版可能會遺漏需要的模塊
  • 驗證安裝成功:cmd輸入nvcc -V,如果能出現版本信息,則證明nvcc安裝成功

Theano文件配置(GPU)

  • 編輯Theano的配置文件.theanorc.txt , 添加如下內容:(具體內容應當對應自己的Python版本和VS版本以及路徑做適當修改)
[nvcc] fastmath = True flags = -LD:\Anaconda\libs compiler_bindir = D:\Microsoft Visual Studio 2013\VC\bin
  • 繼續編輯Theano的配置文件,添加:
[global] device = gpu floatX = float32

Theano配置文件

最終的Theano配置文件內容為:

[global] device = gpu floatX = float32 openmp=False [blas] ldflags = [gcc] cxxflags = -ID:\Anaconda\MinGW\include [nvcc] flags = -LD:\Anaconda\libs compiler_bindir = D:\Microsoft Visual Studio 2013\VC\bin
  • Python中運行”import theano.sandbox.cuda”. 將會編譯第一個Cuda文件, 應當沒有錯誤產生。

測試是否使用GPU

  • 測試方法1
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 功能:測試是否使用GPU 時間:2016年6月10日 11:20:10 """ 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')

使用GPU的測試結果:1.66秒
Theano環境搭建/安裝

使用CPU的測試結果:17.28秒
切換成cpu的方法,我是通過更改theano配置文件,將.theanorc.txt的內容只保留以下內容(可能需要重啟電腦):

[blas] ldflags = [gcc] cxxflags = -ID:\Anaconda\MinGW\include

Theano環境搭建/安裝

  • 測試方法2
    在theano庫中找到theano/misc/check_blas.py,運行這個測試文件。
    這個測試文件里還有不同型號顯卡的性能結果,以供對比。

Theano環境搭建/安裝


其他可選

    • Visual Studio 2013下的安裝配置
    • 為了方便以后建立統一的算法調用平台,故使用Visual Studio來進行圖形化界面的開發,安裝Python Tools for Visual Studio后即可在Visual Studio環境下來調用當前系統中的Python編譯環境。
    • 安裝Python Tools for Visual Studio (2013),下載地址:
    • http://www.aibbt.com/a/18928.html


免責聲明!

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



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