Tensorflow2.0のGPU版をWindows10で使用するまで

# Tensorflow2.0のGPU環境を作る手順

tensorflow2.0でGPU環境を作る際に手間取ったので、ログを残しておく目的で記載。

## この記事を読んでわかること
windows10環境でGPUを使ったtensorflow2.0.0が動かせるようになる

## 環境
+ OS：windows10
+ GPU:Geforce970
+ python:3.6
+ tensorflow:2.0
+ CUDA:1.0.0
+ cuDNN:7.4.1 for CUDA10.0

---
## バージョン確認

[tensorflowのページに記載されているバージョンでインストールする](https://www.tensorflow.org/install/gpu#software_requirements)  
バージョンの対応は厳密に決まっていて、10.0が10.1になっただけでも動かないため注意

tensorflow1.Xの時は[バージョン対応表](https://www.tensorflow.org/install/source_windows#gpu)があったのだが、2020年1月時点でtensorflow2.Xは記載されていない。

上のページから、インストールするバージョンは以下となる。
+ CUDA 10.0
+ cuDNN 7.4.1 for CUDA10.0
+ tensorflow-gpu==2.0.0alpha

---
## インストール

1.  Microsoft Visual C++ 2017  
[Microsoftのサイト](https://visualstudio.microsoft.com/ja/vs/older-downloads/
)からVisual Studio 2017 communityをダウンロードしてインストールします

2. CUDA 10.0  
CUDA10.1はtensorflow2.0に公式対応していないため、CUDA10.0を選択して[公式サイト](https://developer.nvidia.com/cuda-toolkit-archive)からダウンロードする。

![CUDA.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538481/c09ede08-3b71-1dc4-e9c4-877301d37e75.jpeg)


インストールを実行する。

システムの環境変数のPATHに以下の3つのパスを追加する。
+ C:\Proguramu Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin
+ C:\Proguramu Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\libnvvp
+ C:\Proguramu Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\CUPTI\libx64

3. cuDNN 7.4.1 for CUDA10.0  
[公式サイト](https://developer.nvidia.com/cudnn)から、cuDNN 7.4.1 for CUDA10.0をダウンロードしインストールする。  

![cuDNN.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538481/0b8a17da-bf58-8b72-d0a2-c337548f7c8b.jpeg)


ダウンロードには無料の会員登録が必要  

![cuDNNdownload.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538481/9636b3bb-2376-6394-55b6-deeca6acf5c0.jpeg)
「Download cuDNN v7.6.5 (November 5th, 2019), for CUDA 10.0」を選ぶこと  
それ以外では動かないので注意。  

ダウンロードした「cudnn-10.0-windows10-x64-v7.6.4.38.zip」を解凍し、中身を「C:\Proguramu Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0」にコピーすればOK。  

4. tensorflow2.0  
```pip install tensorflow-gpu==2.0.0```でインストールする。
pythonの3.6か3.5が入っていない場合、
事前に[anaconda](https://www.anaconda.com/)を利用して環境を作っておく


### インストール確認

正常にインストールされたことの確認を行います。

1. CUDAバージョン確認  

```nvcc -v```コマンドでバージョンを確認する。  
release 10.0となっていることを確認すればOK
```
>nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:04_Central_Daylight_Time_2018
Cuda compilation tools, release 10.0, V10.0.130
```

2. cuDNNバージョン確認  
   
```where cudnn64_7.dll```でエラーメッセージが出なければOK  
```
>where cudnn64_7.dll
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin\cudnn64_7.dll
```


3. tensorflow2.0インストール確認

4. tensorflowでGPUが使えていることの確認
以下のコードを実行する。

```
#TensorFlowがGPUを認識しているか確認
import tensorflow
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
```

出力結果にGPUが出ていればOK  
今回の結果だと```device_type: "GPU"```とあるのでGPUが認識できている。
```
[name: "/device:CPU:0"
 device_type: "CPU"
 memory_limit: 268435456
 locality {
 }
 incarnation: 14349658765200920174, name: "/device:GPU:0"
 device_type: "GPU"
 memory_limit: 3143997849
 locality {
   bus_id: 1
   links {
   }
 }
 incarnation: 12577774133916212125
 physical_device_desc: "device: 0, name: GeForce GTX 970, pci bus id: 0000:01:00.0, compute capability: 5.2"]
```

快適なtensorflow2.0.0ライフを！