PythonでTensorFlowを始めるまでにしなきゃいけないこと

# PythonでTensorFlowを始めたい！

最近AIとか機械学習って流行ってますよね？
私はその本質を理解しないままAIってすごいだろ？とか言ってきてしまったわけなのですが、Udemyで面白そうな講座を発見したので学習のため挑戦してみました。今回はその環境構築で躓いたのでメモがてら解説として残したいと思います。

さらに、家のPCにはよくわからないまま買ってしまったそこそこのGPUが搭載されているにも関わらず、ゲームもしないので完全に持ち腐れになっていました。機械学習とかにはGPUが使えるらしいのでこれはチャンス！
せっかくなのでGPUを利用したプログラミングをしたい！！ということでGPU環境での構築をしてみました。

## 環境
今回は以下の環境で行いました。

- Windows10 Home
- NVIDIA GeForce GTX 1060 6GB

# Anaconda3のインストールと環境構築

AnacondaとはPythonとcondaというパッケージマネージャや様々なライブラリがまとめられたものです。
virtualenvなどで行うPythonのバージョン切り替えなんかも簡単にできるのでWindowsユーザーの方はこちらを使いましょう。
ではインストールと開発環境の構築を行っていきましょう。

## Chocolateyを使ったインストール

WindowsにはChocolateyというUbuntuでいうaptのようなパッケージマネージャがあります。
アップデートなどの管理をしやすいのでこちらを使ってインストールしました。
直接インストーラを使ってインストールしてもあまり変わらないので好きなほうを選択してください。

### Chocolateyのインストール

[Chocolatey](https://chocolatey.org/install)の公式サイトを参考にインストールします。

#### コマンドプロンプトの場合

```:cmd
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
```
#### PowerShellの場合

```powershell:PowerShell
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
```


### Anacondaのインストール

[こちらのサイト](https://chocolatey.org/packages/anaconda3)を参考にしながらインストールをしましょう。
以下のコマンドを入力するとインストールが行われます。

```powershell:PowerShell
choco install anaconda3
```

### Pathを通す

なおChocolateyでインストールした場合、インストーラでは自動でやってくれる環境変数のPathの設定が行われません。
なので手動で環境変数のPathに以下のPathを追記してください。

```:環境変数のPath
C:\tools\Anaconda3
C:\tools\Anaconda3\Scripts
C:\tools\Anaconda3\Library\bin
```

以上でAnacondaのインストールは完了です。

## 開発環境の構築

開発環境によってはPythonやパッケージのバージョンを管理したい場合があると思います。
それを実現するのに役立つ"Anaconda Navigator"というGUIのアプリケーションがAnacondaにはバンドルされています。
こちらを使えば簡単に環境を変えることができます。
LinuxやMacではvirtualenvとかpipenvとかを使うと思いますが同じようなもんです。

では構築を始めましょう。

まず初めにAnaconda Navigatorを起動し、`Environments > create` と進めます。


![anaconda_navigator01.jpg](https://qiita-image-store.s3.amazonaws.com/0/225010/f9454481-7102-5b98-4dba-42e226c23540.jpeg)

次に環境名（ここでは"*tf190*"としています）を入力し、Pythonのバージョンを3.6に設定したらCreateで環境を作ります。

![anaconda_navigator02.png](https://qiita-image-store.s3.amazonaws.com/0/225010/9af951dd-3164-9909-5af8-f7f4b216e026.png)

環境が構築されたら先ほど環境名のところにある右三角をクリックし`Open Terminal`をクリックしましょう。

![anaconda_navigator03.jpg](https://qiita-image-store.s3.amazonaws.com/0/225010/88dc7a81-4bc4-dfbe-f858-67f3f1dc9f44.jpeg)

すると先頭に`(tf190)`という先ほど作った環境名が入ったコマンドプロンプトが開きます。
これで専用の開発環境で開発できる準備ができました。
以降のコマンド操作はこの環境のコマンドプロンプトを通して実行していってください。

# TensorFlowのインストール

TesorFlowのインストールにはCPU版とGPU版があります。
それぞれの違いはCPUを使って機械学習するかGPUのサポートを使って高速に機械学習するかという点です。
GPUがあればGPU板をインストールしたほうがいいでしょう。それぞれでできることは変わりません。
ではさっそくこちらの[TensorFlowのインストールガイド](https://www.tensorflow.org/install/install_windows?hl=ja)を参考にインストールしていきましょう。今回インストールするバージョンは1.9.0です。

## CPU版のインストール

CPU版のTensorFlowのインストールは以下のコマンドを入力するだけです。

```sh:CPU版のインストール
$ pip install tensorflow
```

## GPU版のインストール

GPU版のインストールにはGPUに加え、以下のものが必要になります。

- Visual Studio2017
- CUDA® Toolkit 9.0
- cuDNN v7.0

ではこれらを含めたインストール方法を解説していきます。

### Visual Studio2017のインストール

CUDAのインストールにはVisual Studioが必要となりますのでCommunityバージョンをインストールしましょう。

### CUDAのインストール

今回はバージョン9.0をインストールします。NVIDIAの[CUDAアーカイブ](https://developer.nvidia.com/cuda-toolkit-archive)からCUDA Toolkit 9.0を選択しインストーラをダウンロード＆インストールしてください。ダウンロードの際にDeveloperのアカウントの作成を求められるので各自アカウントを作成してください。
インストール手順はインストーラに従ってすべてデフォルトで問題ないです。
また、パッチがいくつかあるのでそれも一緒にインストールしましょう。

> #### ※ *Visual Studio Integrationが失敗してインストールが進まない場合*

> 私がCUDAをインストールする際にはまったポイントです。
[こちらのサイト](https://devtalk.nvidia.com/default/topic/1033111/cuda-setup-and-installation/cuda-9-1-cannot-install-due-to-failed-visual-studio-integration/)を参考に__NVIDIAのソフトをすべてアンインストール__＆__Program FilesのNVIDIA関連のファイルを強制削除する__ことで解決しました。なぜこの問題が起こるのかはよくわからないのですがおそらくソフトのバージョンの整合性が合わないような問題が起こっているのではと思っています。今のところ何の問題もなく動いていますが実行する際は__自己責任__でお願いします。


### cuDNNのインストール

[こちらのアーカイブ](https://developer.nvidia.com/rdp/cudnn-archive)からv7.0のfor CUDA9.0と書かれたものをダウンロードしてください。
zipを解凍したら`cuda`というフォルダがあります。その中身を`C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0`にコピペしてください。
以上でcuDNNがインストールされました。

### GPU版のTensorFlowのインストール

最後にGPU版のTensorFlowのインストールは以下のコマンドを入力します。

```sh:GPU版のインストール
$ pip install tensorflow-gpu
```

# インストールできたかの確認

コマンドプロンプトでpythonの対話型シェルを起動してimportできるかを確かめましょう。
何も表示されなければインストールできています。

```python:コマンドプロンプト
(tf190) $ python
>>> import tensorflow
>>> # ここに何も表示されなければインストールできています。
```

# 終わりに

以上でTensorFlowを使うまでの準備は整いました。TensorFlowのバージョンが変わればその他のソフトの要求されるバージョンも変わるのでインストールする際はしっかり公式HPを確認してインストールをしましょう。
環境ができれば、あとはデータ収集やら機械学習やら判別器の作成やらをやるだけです。
いろいろアイデアが浮かんでいるので暇があれば記事にしたいと思います。