Anaconda NavigatorでTensorFlowやChainerをインストール

# 前提と結論
会社で久しぶりに機械学習（というかディープラーニング）をやることになったので、勉強用に自宅の低スペックノートPCに開発環境を構築した時のメモ。
ネットで調べるとcuDNNのセットアップの方法とか色々書いてありますけど、普通のPCで動かすだけなら、*Anaconda Navigator* から**GUIだけでインストール**できました。
（CPU版でちょっと勉強したい人向け。本格的にやりたい人のGPU版も入りそうですけど、試せないので正しく動くかどうかはわかりません）

#### 試した環境
- Windows10 64bit (CPU: Intel Core i3, RAM: 8GB, GPU: Intel HD Graphics)
- Anaconda 5.2 (64bit, Python 3.6)

# インストール
## Anaconda のインストール
まず、いつも通りにインストーラーを使ってAnacondaをインストール。
https://www.anaconda.com/download/

## （任意）Anaconda Navigatorで仮想環境を作成
### 環境の作成
それほど必要性は感じなかったのですが、Anacondaの機能で仮想環境を作れるようなので、作ってみました。
Anaconda Navigatorを起動して、左端の「Environments」を選択。真ん中のbase(root)と書いてある場所の下のほうにある「Create」から環境を作成します。
![Environments初期画面](https://qiita-image-store.s3.amazonaws.com/0/281332/134e6e95-6cf9-9549-2d82-12e1554fcdf0.png)
あとでわかるように、名前は適当につけます。（ここでは「DL」）
![環境作成ダイアログ](https://qiita-image-store.s3.amazonaws.com/0/281332/5a161ded-7a1c-a0c8-6f95-613642a773dd.png)

### Jupyterの追加
作った段階だと、Jupyter Notebookが使えなくて、Matplotlibも入っていない環境なので、必要なパッケージを追加します。（Createじゃなく、baseをCloneすれば個別にインストールする必要ないかもしれません）
![入れた直後](https://qiita-image-store.s3.amazonaws.com/0/281332/eb8ba389-6aea-79d0-4463-c7ef1e878ca4.png)

まず、先ほど作ったDLを選択して、Jupyterをインストールします。フィルタを「Not installed」や「All」にしてからjupyterと入力すればすぐに見つかるので、チェックを入れてApplyします。
![jupyterインストール](https://qiita-image-store.s3.amazonaws.com/0/281332/0855b0fb-7b77-f3ae-f3c3-c0d840764fb5.png)
依存関係を自動的にチェックして、確認画面が出るのでここでもApplyしましょう。
![jupyter確認](https://qiita-image-store.s3.amazonaws.com/0/281332/68a356fa-5c5e-ba7e-e4b5-c8fabe43117f.png)

### その他のパッケージの追加
Jupyterと同じように、必要なパッケージを追加していきます。私はとりあえず以下のものを入れました。

- Matplotlib
- SciPy
- scikit-learn

特に理由がなければ、pandasも入れるといいでしょう。


## Deep Learningライブラリの追加
仮想環境にパッケージを追加した人は、同じ手順です。インストール先の環境に、TensorFlowとChainerをインストールします。

### TensorFlowのインストール
Environmentsの画面から、フィルタを「Not installed」にし、tensorと入力すればTensorFlowもすぐに見つかります。ここではCPU版を使うので、「tensorflow」にチェックを入れてApplyします。
![tensor検索](https://qiita-image-store.s3.amazonaws.com/0/281332/1e2172d0-7c36-3cd4-984a-6b9487038c27.png)

自動的に依存関係のあるパッケージを調べて、確認を求められるので、もう一度Applyすると、インストールが始まります。
![tensorflow確認](https://qiita-image-store.s3.amazonaws.com/0/281332/91baea97-06b3-76de-31f7-b3bb0cea75d4.png)

### TensorFlowの確認
インストールが完了したら、正しく動作するかどうか確認してみます。
と言っても、何が動けば正常なのかわからないので、別のやり方でインストールした人の方法を試してみました。
参考：[イントロダクション確認](https://qiita.com/exy81/items/48314b968d9fad6170c8#%E3%82%A4%E3%83%B3%E3%83%88%E3%83%AD%E3%83%80%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E7%A2%BA%E8%AA%8D)

（仮想環境を作った人は注意）TensorFlowをインストールした環境のJupyter Notebookを立ち上げます。
![jupyter起動](https://qiita-image-store.s3.amazonaws.com/0/281332/cd022b45-94ae-f7fb-ad8a-5565a48bbcce.png)

Jupyter Notebookが立ち上がるので、リンク先のコードをセルに貼り付け、実行します。
![tf結果](https://qiita-image-store.s3.amazonaws.com/0/281332/94fefa27-5921-8bdf-bd5a-2ecfa964d485.png)

上のような結果が出れば、インストール成功です。試した時のTensorFlowのバージョンは1.9.0なので、直接ダウンロードするより、少しだけ古いものが入るようです。
試せないのでわかりませんが、CUDA対応のGPUを搭載したPCの場合でも、同じ手順でtensorflow-gpuを入れれば動くかもしれません。

### Chainerのインストール
ChainerもTensorFlowと同じ方法でインストールできます。
![chainer検索](https://qiita-image-store.s3.amazonaws.com/0/281332/00b0c160-4aac-66b3-9d48-62db627f9b23.png)

### Chainerの確認
Chainerの動作確認は、コマンドラインから実行しました。
先ほどのJupyterと同じように、Chainerをインストールした環境のターミナルを立ち上げ、
Chainerのexampleに含まれているMNISTの学習を試してみます。

>動作確認のためサンプル(mnist)を実行
以下をgit cloneまたはzipで取得する。
https://github.com/pfnet/chainer
anaconda promptでexample/mnistへディレクトリ移動
以下で実行（CPUのみ使用したMNISTのサンプル）
`python train_mnist.py`

参考：[windows10へChainer(2.0.2)のインストール](https://qiita.com/crimson707/items/a070a67c0911ef463668)

```
(DL) C:\Users\****\Desktop\chainer-master\examples\mnist>python train_mnist.py
GPU: -1
# unit: 1000
# Minibatch-size: 100
# epoch: 20

C:\Users\****\Anaconda3\envs\DL\lib\site-packages\chainer\optimizers\adam.py:111: RuntimeWarning: invalid value encountered in sqrt
  param.data -= hp.eta * (self.lr * m / (numpy.sqrt(vhat) + hp.eps) +
epoch       main/loss   validation/main/loss  main/accuracy  validation/main/accuracy  elapsed_time
C:\Users\****\Anaconda3\envs\DL\lib\site-packages\chainer\optimizers\adam.py:111: RuntimeWarning: invalid value encountered in sqrt
  param.data -= hp.eta * (self.lr * m / (numpy.sqrt(vhat) + hp.eps) +
1           0.189056    0.0948805             0.942767       0.9709                    56.0272
2           0.0745826   0.076078              0.97705        0.976                     114.927
3           0.0493005   0.0704326             0.984417       0.9799                    177.546
4           0.034494    0.0657689             0.988983       0.9796                    235.134
(略)
18          0.0100594   0.0922975             0.9972         0.9812                    1052.57
19          0.00842738  0.128585              0.997583       0.9788                    1113.97
20          0.00700435  0.0970289             0.99805        0.9826                    1175.04

(DL) C:\Users\****\Desktop\chainer-master\examples\mnist>
```

なんだか、warningも出ていますが、動作しているようです。CPUモードなので、速度は遅いですね。

# 結局
ネットで調べると、いろいろな理由で苦労した人の記事が多いので、インストールが大変そうに思えたのですが、簡単に試すだけなら、そんなことはなかったみたいです。
Qiitaにもコマンドラインからpipを使っている例が多いみたいですけど、GUIでできる様になっているんだったら、GUIの方が良いですね。