先講解windows下深度學習環境的搭建
步驟一 安裝Anaconda
Anaconda是一個用於科學計算的python發行版,支持linux,mac,windows系統,提供了包管理和環境管理的功能,Anaconda是一個打包的集合,里面裝好了conda,某個版本的python,眾多的packages等,科學計算工具等
下載中科大鏡像:http://mirrors.ustc.edu.cn/

從archive路徑下載Anaconda3-4.2.0-Windows-x86_64.exe
我的安裝路徑為 D:\Program Files (x86)\Anaconda,注意這里我選擇的是3-4.2.0版本。

步驟二 安裝minGw,libpython
進入Anaconda Prompt命令窗口,輸入命令
conda install mingw libpython
中間會要你選擇Proceed([y]/n)? 輸入y


此處安裝如果比較慢或者有問題可以參考:手把手教你搭建深度學習平台——避坑安裝theano+CUDA https://www.cnblogs.com/hdu-zsk/p/5950924.html
配置環境變量 計算機->屬性->高級系統設置->環境變量
編輯系統變量‘path’,追加D:\Program Files (x86)\Anaconda\MinGW\x86_64-w64-mingw32\lib;D:\Program Files (x86)\Anaconda\MinGW\bin;

步驟三 安裝theano
進入Anaconda Prompt命令窗口,輸入命令:
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.
#創建一個名為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)測試方案一
出現這種錯誤 ,或者我們在命令窗口執行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配置了。
步驟八 完整測試
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出現
(2)如果運行出現下面錯誤:

我們可以配置.thranorc.txt文件,忽略cuDNN
[dnn]
enabled = False
(3)如果出現CVM未定義的錯誤,按照下面方法移除該文件夾是可以起作用的(親測)。

(4)執行出現MKL_THREADING_LAYER=GNU錯誤
我們使用如下命令:
conda install mkl=2017
如果這些方法都不能解決這些錯誤,我只能推薦你看一下這篇文章,希望能夠對你有幫助
步驟九 安裝tensorflow
1、cpu環境
如果你使用cpu,那么在命令窗口下運行:
conda install tensorflow

2、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文件
sudo gedit ~/.theanorc
[global]
floatX=float32 device=cuda [cuda] root=/usr/local/cuda-8.0 [nvcc] flags=-D_FORCE_INLINES fastmath=True
8.測試安裝
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
參考文章:
[2]Linux安裝Anaconda和cuda、cdnn和Tensorflow-gpu
[3]win10下通過Anaconda安裝TensorFlow-GPU1.3版本,並配置pycharm運行Mnist手寫識別程序(或者使用這個安裝)
