Win10環境下安裝theano並配置GPU詳細教程

来源:http://www.cnblogs.com/zhangjianheng/archive/2016/12/23/6215529.html
-Advertisement-
Play Games

在win10環境下,安裝VS2013,Cuda,Anaconda3,並安裝Theano配置GPU詳細教程 ...


一.軟體和環境

(1)安裝日期2016/12/23

(2)原材料VS2013cuda-8.0(最好下載cuda7.5,目前theano-0.8.2cuda-8支持不是很好),Anaconda3-4.2.064位);

(3)環境為win10.

 

二.安裝步驟

(1)安裝VS2013。這個沒什麼可說的,下載64位版本後就是一路下一步、確定就行,記住安裝位置就可以了,我這裡的安裝目錄是D:\software\VS2013

 

接著右鍵我的電腦-》屬性-》高級系統設置-》環境變數,之後編輯系統變數Path,加入兩個路徑D:\software\VS2013\VC\binD:\software\VS2013\Common7\IDE,以分號隔開,如圖:

 

點擊確定即可。

 

(2)安裝cuda。這個也沒什麼可說的,到官網上下載cuda,並一路下一步+確定就好了,註意如果安裝過程中win10提示阻止某項操作,一定要選擇允許本次操作或允許程式所有操作,否則cuda就會安裝失敗。Cuda官網地址為

http://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/#axzz46v2MC6l8

下載地址為https://developer.nvidia.com/cuda-downloads

如圖:

 

註意:這是cuda-8版本,對目前版本的theano支持不是很好,不過不影響使用,最好還是下載cuda7.5,我這裡懶得再重裝一遍,所以就用的cuda-8

還有一定要記住cuda的安裝路徑,我的路徑就是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0,如圖:

 

 

(3)右鍵我的電腦-》屬性-》高級系統設置-》環境變數,可以看到系統變數中增加了兩個變數CUDA_PATHCUDA_PATH_V8_0,如圖:

 

之後編輯系統變數Path,加入兩個路徑%CUDA_PATH%\lib\x64%CUDA_PATH%\bin,要用分號隔開,如圖:

 

點擊確定。

打開命令行,輸入nvcc -V,如果出現下圖則安裝成功:

 

 

並可到目錄C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\1_Utilities\deviceQuery下用VS2013打開並運行測試樣例deviceQuery_vs2013.vcxproj文件,如圖:(註意C:\ProgramData為隱藏文件夾,需要點擊C-》查看-》選項-》查看,選中顯示隱藏的文件、文件夾和驅動器,點擊確定。如圖)

 

圖為顯示C:\ProgramData文件夾的查看選項

 

 

                                                                                       

圖為deviceQuery_vs2013.vcxproj的位置

 

 

圖為在VS2013中的運行結果

最後一行為Result = Pass則表示安裝配置成功。

 

 

(4)安裝Anaconda3-4.2.0,這個很簡單,就是一路確定即可,記住安裝位置,如我就是安裝在D:\software\Anaconda3,如圖:

 

 

接著右鍵我的電腦-》屬性-》高級系統設置-》環境變數,在用戶變數中添加PATH,並加入路徑D:\software\Anaconda3D:\software\Anaconda3\ScriptsD:\software\Anaconda3\Library\bin,點擊確定。如圖:

 

 

之後進入命令行輸入python,如果出現如圖信息,則安裝成功:

 

關閉命令行。

 

(5)安裝mingwlibpython。打開命令行後輸入conda install mingw libpython即可,目前libpython已經支持python3.5了,就不用再配置python3.4的環境了。註意如果安裝mingw速度很慢,則可ctl+c並退出命令行,再進入命令行修改Anaconda的鏡像,這裡推薦清華的鏡像,方法為在命令行中輸入:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --set show_channel_urls yes

,之後再conda install mingw libpython即可。

之後到Anaconda3的安裝目錄中可以看到MinGW的文件夾,如圖:

 

註:網上說需要把MinGW的路徑加入到環境變數,其實不用,等會兒再theano的配置文件中標出MinGW的位置即可

 

(6)安裝theano。首先打開命令行,輸入conda install scipy,之後再輸入pip install theano即可。(為什麼要輸入conda install scipy我也不明白,但是網上建議)。之後在個人主文件夾下新建一個“.theanorc.txt”的文檔。個人主文件夾就是打開命令行後所顯示的文件夾路徑,比如我的就是C:\Users\15540

 

 

註意theano的配置文件為.theanorc.txt,註意前面那個點要有,並且文件名為.theanorc.txt是文件類型,不要弄錯。打開.theanorc.txt寫入以下信息:

[global]

openmp=False

device = gpu

optimizer_including=cudnn

floatX = float32

allow_input_downcast=True

[lib]

cnmem = 0.8

[blas]

ldflags=

[gcc]

cxxflags=-ID:\software\Anaconda3\MinGW

[nvcc]

flags = -LD:\software\Anaconda3\libs

compiler_bindir = D:\software\VS2013\VC\bin

fastmath = True

註意需要把cxxflags=-ID:\software\Anaconda3\MinGW換成你的Anaconda3MinGW的位置,flags = -LD:\software\Anaconda3\libs換為你的Anaconda3libs的位置,compiler_bindir = D:\software\VS2013\VC\bin換為你的VS2013VC\bin的位置;還有cnmem = 0.8這個網上說設為1,但是貌似有點問題,建議設為小於1的值,如我這裡設為0.8 ,這就可以避免後面顯示CNMEM is disabled了。

 

(7)更新cudnn文件,到網上搜索cudnn下載下來(到官網註冊一下就可以下載了,官網網址為https://developer.nvidia.com/cudnn)。將下載來的文件解壓,解壓出cuda文件夾,裡面包含3個文件夾,如圖。將設三個文件夾替換掉系統裡面的對應文件,進行覆蓋替換即可,例如我的文件目錄為C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0。覆蓋掉後面導入theano時會就不會出現CuDNN not available提示了。

 

 

(8)測試theano。打開命令行,輸入python,在輸入import theano,如果出現UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd5 in position 11: invalid continuation byte這種編碼問題,這是因為掉用nvcc返回的字元串是使用的cwindows預設的預設編碼,直接找到theano中對應的報錯文件,把源碼出錯的地方改為 *.decode("GBK")就可以。比如我的是在theano下的__init__.py出現的編碼問題,則修改為:

 

 

(如果出現上述錯誤,關閉命令行修改錯誤,重輸一遍命令即可)出現以下畫面則表示成功。

 

註:可以看到仍有warning,不過不影響使用,出現warning的原因主要是cuda-8對目前版本的theano支持不太好導致,不過相信以後更新的theano會解決這個問題,如果實在接受不了這個warning就安裝cuda7.5,步驟一樣

 

三.其他問題

1)不要在環境變數添加PYTHONPATH變數,否則容易在import theano後出現configparser找不到或沒有這個組件這個問題(在我這裡是這樣的);

2)建議在安裝完cuda後重啟電腦;

3)如果在命令行輸入命令後出現什麼問題,建議修改完問題後重啟命令行;

4)如果還有其他問題,試試重啟電腦後在import theano,如果還有問題,一般就是配置文件.theanorc.txt的問題(我這個配置方式不一定百分之百的適合你),下麵列出一些我參考的文章:

http://blog.csdn.net/u011821462/article/details/50145221

http://blog.csdn.net/stormragewang/article/details/51261465

http://blog.csdn.net/voidfaceless/article/details/53711550

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • "fatal.h"//頭文件 1 #include<stdio.h> 2 #include<stdlib.h> 3 #define Error(Str) FatalError(Str) 4 #define FatalError(Str) fprintf(stderr,"%s\n",Str),exit ...
  • 樣式表的幾點常用:background-color: 背景顏色 background-image:url 設置圖片背景 background-repeat平鋪 repeat-x 橫向平鋪 background-position:center 背景居中 background-position:righ ...
  • 這個鏈表是帶有表頭的單鏈表。實現鏈表的一些規範操作,初始化,插入,刪除等。包括兩個頭文件list.h,fatal.h,庫函數list.c,測試函數testlist.c。頭文件放的都是函數聲明,庫函數list.c放的的函數的定義。 頭文件list.h 頭文件fatal.h: 庫函數list.c: 測試 ...
  • 觀察者模式由四個角色組成:抽象主題角色,抽象觀察者角色,具體主題角色,抽象觀察者角色,具體觀察者角色。 抽象主題角色(Subject):把所有的觀察者角色的引用保存在一個集合中,可以有任意數量的觀察者。其提供一個介面,可以添加、刪除觀察者,並可以向登記過的觀察者發送通知。 具體主題角色(Observ ...
  • 樹狀數組套主席樹模板題。。。 題目大意: 給定一個含有n個數的序列a[1],a[2],a[3]……a[n],程式必須回答這樣的詢問:對於給定的i,j,k,在a[i],a[i+1],a[i+2]……a[j]中第k小的數是多少(1≤k≤j-i+1),並且,你可以改變一些a[i]的值,改變後,程式還能針對 ...
  • 一、字元串操作 創建字元串 String s2 = new String("Hello World"); String s1 = "Hello World"; 1.字元串連接 多個字元串鏈接時,每個字元串之間用+相連,+就是字元串鏈接,連接之後生成一個新的字元串。 2.獲取字元串長度 a.lengh ...
  • Swift相關知識,有時間就敲點,供自己學習總結,亦或也有幸能幫到他人,有理解、使用錯誤的地方也望能得到指正。 ///******************************************************************************************* ...
  • python內置函數open()用於打開文件和創建文件對象 語法 name:文件名 mode:指定文件的打開模式 r:只讀 w:寫入 a:附加 r+,w+,a+同時支持輸入輸出操作 rb,wb+以二進位方式打開 bufsize:定義輸出緩存 0表示無輸出緩存 1表示使用緩衝 負數表示使用系統預設設置 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...