[Python][Chainer][Windows] WindowsにChainerのインストール

WindowsでのChainer環境作成手順メモ（主にエラーの対処に関する備忘録です）

[Chainer: A flexible framework for neural networks](http://chainer.org/)

※注意！ 筆者の環境ではGPU使用版(CUDA版）の実行環境が作成できなかったため、CPU版での参考としてください

# 検証環境

+ Windows 10
+ Python 3.6.0
+ Chainer 1.21.0
+ CUDA 8
+ GeForce GTX 760

# インストール手順
## (Option) CUDA Toolkitのインストール
ChainerでCUDAを使用したい場合は、必ず先に `CUDA Toolkit` をインストールしてください

[CUDA Toolkit | NVIDIA Developer](https://developer.nvidia.com/cuda-toolkit)

例：[Download] => [Windows] => [x86_64] => [10] => [exe (network)] を選択。

## Chainerのインストール
Chainerをインストールします。

```
$ pip install chainer
```

## サンプルの動作確認
※実行するサンプルを落としてくる際には、`master`ではなく、必ず落としてきたChainerと同じバージョンのタグのサンプルを使用してください。（バージョン不一致の場合エラーが出る可能性があります）

[pfnet/chainer: A flexible framework of neural networks for deep learning](https://github.com/pfnet/chainer)

### 通常での実行

```bash:通常での実行
$ python examples/mnist/train_mnist.py
```

![無題.png](https://qiita-image-store.s3.amazonaws.com/0/37721/42c0c02f-91d0-2d01-c97a-f7c195ff960a.png)

### GPUを使った実行

TODO: 自分の環境だとどうも実行時にエラーがでるので検証中
=> 他の人の記事を真似して試行錯誤しても、CUDAのヘッダー類をどうやっても検出できないため諦め中・・・(v1.21.0)。

インストールが成功していれば以下の実行が可能なはずです。

```bash:gpuを使用した実行
$ python train_mnist.py -g 0
```

# トラブルシューティング
## Microsoft Visual C++ 14.0が存在しない場合
補足: すでに Visual Studio 2015 をインストール済みの環境ではこのエラーは発生しませんでした。

pipでインストールしようとすると以下の様なエラーがでました。

```console:pipでchainerのインストールを実行して失敗
$ pip install chainer
  Using cached chainer-1.10.0.tar.gz
    Complete output from command python setup.py egg_info:
    running egg_info
    creating pip-egg-info\chainer.egg-info
    writing top-level names to pip-egg-info\chainer.egg-info\top_level.txt
    writing dependency_links to pip-egg-info\chainer.egg-info\dependency_links.txt
    writing pip-egg-info\chainer.egg-info\PKG-INFO
    writing requirements to pip-egg-info\chainer.egg-info\requires.txt
    writing manifest file 'pip-egg-info\chainer.egg-info\SOURCES.txt'
    warning: manifest_maker: standard file '-c' not found

    error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
    Executing cythonize
    Options: {'annotate': False, 'no_cuda': False, 'profile': False, 'linetrace': False}
    **************************************************
    *** WARNING: nvcc not in path.
    *** WARNING: Please set path to nvcc.
    **************************************************
    Include directories: []
    Library directories: []

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\<username>\AppData\Local\Temp\pip-build-7ak65o9t\chainer\
```

どうやらCythonのためのコンパイラがないのでダメな様子なので、エラーログにも指定されている `Microsoft Visual C++ Build Tools` を先にインストールします。(環境にもよるとは思いますが、インストールに地味に時間がかかりました。30分ぐらい？）

[Download the Visual C++ Build Tools (standalone C++ compiler, libraries and tools)](http://landinghub.visualstudio.com/visual-cpp-build-tools)

これでもう一度実行すればインストールできるはずです。

## サンプル実行時に AttributeError: 'module' object has no attribute 'PlotReport' となる
上にも書きましたが、インストールしたChainerのバージョンとサンプルのバージョンが一致しない場合にこのエラーがでました。
自分のケースでは `chainer 1.21.0` 使用時に `master` を使用してしまい、このエラーが発生しました。
対処としては、`1.21.0` のタグをチェックアウトして、そのバージョンでのサンプルを使用すれば問題なく動作しました。

## cuda.h などが見つからない（未解決）
chainer のインストール時に以下のエラーが出るケースがあります。

```
**************************************************
*** WARNING: Include files not found: ['cublas_v2.h', 'cuda.h', 'cuda_profiler_api.h', 'cuda_runtime.h', 'curand.h']
*** WARNING: Skip installing cuda support
*** WARNING: Check your CFLAGS environment variable
**************************************************
```

TODO: 現状筆者の環境では未解決です・・・。他の人の記事ではINCLUDEにパスを足すなどの記載がありましたので足してみましたが解決しませんでした。

## cudnn.h が見つからない（未検証）
```
**************************************************
*** WARNING: Include files not found: ['cudnn.h']
*** WARNING: Skip installing cudnn support
*** WARNING: Check your CFLAGS environment variable
**************************************************
```

# 参考
[Chainer MNIST Error　AttributeError: 'module' object has no attribute 'PlotReport'](https://groups.google.com/forum/#!topic/chainer-jp/ViW_gViL0rM)
[Windows10にChainer+CUDA 8.0をインストール - Qiita](http://qiita.com/mash0510/items/fcc8fe717de4bcee90b2)