# Window10安裝tensorflow、cuda、cudnn教學
###### tags: `python`
## 前置步驟:
#### 請先安裝好Anaconda,這裡不贅述
這裡補充,將此選項打勾,優點是可以直接在電腦的cmd使用conda等指令
缺點是可能會影響其他的軟體
不打勾優點是不影響其他軟體
缺點是只有在anaconda prompt才可以使用conda指令

---
版本進化的很快,所以安裝tensorflow前,請先到此網頁觀看你需要的版本
(不要追求最好,很多時候都是因為版本的問題就不能跑)
https://www.tensorflow.org/install/source_windows
或者是這個網頁,這個網頁好像寫的比較詳細
https://docs.floydhub.com/guides/tensorflow/#tensorflow-22
這裡有網頁可以搭配keras一起使用
https://docs.floydhub.com/guides/environments/
這裡有個資訊是cuda10.1的版本支援tensorflow2.1.0以上的版本
這裡我們使用的版本是:
- Operating System=Windows 10
- GPU=RTX2060
- python=3.7.4
- tensorflow=1.14.0
- CUDA=10.0
- cuDNN=7.4.1
你可以打開Anaconda Prompt(Anaconda3),輸入以下指令觀看你的python版本
```
python --version
```
若要預載tensorflow,你可以輸入以下指令
```
pip uninstall protobuf
pip uninstall tensorflow
```
## 步驟一:你可先安裝CPU的tensorflow(想安裝GPU版本的這個步驟可以略過)
#### 打開Anaconda Prompt(Anaconda3),輸入以下指令
```
pip install tensorflow==1.14.0
```
這樣就可以指定安裝1.14.0版本的tensorflow,你也可以更改成自己需要的版本號
也可以不指定直接安裝
```
pip install tensorflow
```
觀看tensorflow版本的方法,請依以下指令依次輸入
```
python
import tensorflow as tf
tf.__version__
```

從圖中可以看出我的版本是1.14.0
到這裡就可以跑訓練了,不過還沒有用到GPU加速
## 步驟二:下載NVIDIA Driver
到此網站挑選你GPU的版本,然後下載
https://www.nvidia.com/Download/index.aspx
下載完後可以到GeForce Experience,點選介面上的驅動程式,觀看你的Driver版本


可以到這個網站觀看CUDA對應NVIDIA Driver的版本
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
## 步驟三:安裝CUDA
到此網站下載CUDA
https://developer.nvidia.com/cuda-toolkit-archive
這裡下載的是CUDA10.0

選擇自訂

只勾選CUDA,其他的不要勾

路徑皆不要更改

檢查系統是否有把這cuda的這兩個資料夾放到系統環境變數中,如果沒有,請自己找到資料夾加進去

## 步驟四:安裝cuDNN
到此網站下載cuDNN
https://developer.nvidia.com/cudnn
下載前要先登入會員,然後找到你要的版本,我這裡是找
cuDNN v7.4.1 (Nov 8, 2018), for CUDA 10.0

將剛剛下載的cuDNN解壓縮後打開會看到這些東西

將cuDNN的bin、include、lib複製到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0中

如果安裝好了,你可以在打開Anaconda Prompt(Anaconda3),輸入以下指令查看cuda版本
```
nvcc -V
```
#### 切記,'V'要大寫
## 步驟五:架設tensorflow-gpu
再來請打開Anaconda Prompt(Anaconda3)一步一步來
輸入以下指令創建環境
```
conda create -n your-tensorflow-gpu python=3.7
```
進入你剛剛創建的環境
```
activate your-tensorflow-gpu
```

安裝tensorflow-gpu,這裡選擇1.14.0
```
pip install tensorflow-gpu==1.14.0
```
測試tensorflow-gpu,請逐行輸入
```
python
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
```
如果出現以下這些東西,就代表OK啦

或者你可以打入以下指令來檢測
較舊的tensorflow
```
import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
```
較新的tensorflow
```
import tensorflow as tf
sess = tf.compat.v1.Session(config = tf.compat.v1.ConfigProto(log_device_placement=True))
```
如果要離開環境,可以打
```
conda deactivate
```
## 步驟六:如果要配置spyder或jupyter(此步驟要在你生成的環境做)
### spyder
外層的spyder是Anaconda的spyder並不是你剛剛創建虛擬環境的spyder,所以如果想在這個環境下使用spyder你必須先安裝他,請輸入以下指令
```
conda install spyder
```
安裝結束後在你創建的環境下輸入"spyder",就可以使用
```
spyder
```
在"開始功能表"也會多出你創建環境的spyder

### jupyter
跟spyder一樣,所以必須自己在環境下安裝一個
```
conda install jupyter
```
開啟指令
```
jupyter notebook
```
在"開始功能表"也有

## 額外配置(此步驟要在你生成的環境做):
opencv
```
conda install -c conda-forge opencv
```
keras
```
pip install keras==2.2.5
```
可到這裡查到keras對應tensorflow版本
https://docs.floydhub.com/guides/environments/
如果再編譯時發現沒有"matplotlib"
```
pip install matplotlib
```
編譯時發現沒有PIL
```
pip install pillow
```
# 額外配置安裝完請記得重新啟動程式