Try Chainer - zettsu-t/zettsu-t.github.io GitHub Wiki

Windows 10 64-bit環境でChainerを使う

Python3をインストールする

インストール作業用のアカウントを決める

インストールするときのユーザ名に、US-ASCII以外の文字が入っていると、パッケージのインストールに失敗することがある。これは"C:\Users\名前" ディレクトリ以下にアクセスしようとして文字コード関連のエラーが出るためである。これを回避するには、インストール専用のアカウント(installerなど)を作って作業する。

Pythonと、機械学習に必要なパッケージをインストールする

Anacondaをダウンロードしてインストールするのがよいでしょう。足りないパッケージはcondaまたはpip(後述)を使ってインストールします。

以下はAnacondaではなく、Windows版Pythonをインストールする手順です。

Python本体をダウンロードして実行する

執筆時点での最新は python-3.6.3-amd64.exe 。インストール時の設定は以下のようにするとよい。

  • Install launcher for all users をチェックして、Customize installation する
  • Documentation, pip, tcl/tk, Python test suite, pylauncher, for all users をチェックする
  • Install for all users, Associate files with Python, Create shortcuts, Add Python to environment variables, Precompile standard library をチェックする
  • ディレクトリは C:\bin\python などにする。 C:\Program Files は空白が入っているので、Pythonの起動スクリプトを書くときに煩わしい。

パッケージをインストールできるようにする

環境変数 PYTHONPATH にインストール先ディレクトリ(上記に従えば C:\bin\python)を設定する。

VC++がない場合は、MinGW GCCでコンパイルできるようにする。C:\bin\python\Lib\distutils\distutils.cfg を作成し、以下の内容を記述する。

[build]
compiler=mingw32

MinGW GCCにPATHを通す。

$ set PATH=C:\MinGW\bin;%PATH%

conda/pipでパッケージをインストールする

Anacondaを使うときはまずcondaでインストールし、そうではうまくいかない場合(例えばcondaではChainer 2.1.0がインストールされるので、Chainer 3.0.0をインストールしたい)場合はpipを使う。condaにパッケージ名だけを指定してインストールする。

$ conda install numpy

pipにパッケージ名だけを指定してインストールする。MinGW GCCでコンパイルできる環境があれば、バイナリが必要なパッケージもインストールできる。

$ pip install numpy

コンパイルに失敗した場合は、非公式バイナリをダウンロードしてインストールする。ダウンロードしたファイル名は、ドライブ名を含むフルパスで指定する。

$ pip install C:\フルパス\numpy‑1.13.3+mkl‑cp36‑cp36m‑win_amd64.whl

初めての機械学習の定番は、顔画像による人物判定のようなので(?)、numpy, Pillow, chainer, opencv-python, scikit-image, scikit_learn の各パッケージをインストールする。

Pythonスクリプトの検査のために、pylintをインストールする。pip install pylintに失敗したら、先にwrapt-1.10.11-cp36-cp36m-win_amd64.whlをインストールする。

インストールに失敗するのは、インストールしたいパッケージそのものではなく、インストールしたいパッケージが依存している別のパッケージということがある。そのときは依存しているパッケージ.whlをインストールする。cp932が元でインストールできない、とエラーメッセージが出たら、落ち着いてwhlを探すとよい。

Theanoパッケージをインストールする

Theanoパッケージをインストールするときに、C++に::hypotがないと言われてコンパイルエラーになることがある。~/.theanorcに下記の通りコンパイルオプションを書いてからインストールする。

[gcc](改行)
cxxflags = -D_hypot=hypot

元記事には、C:/Users/username 以下に.theanorcを置くとされているが、環境変数 HOME を設定しているときはそこに置く。

Cygwinシェルから使えるようエイリアスを設定する(任意)

alias python=/cygdrive/c/bin/python/python
alias python3=/cygdrive/c/bin/python/python

Chainerのサンプルコードを展開する

pip show chainerで表示されるバージョン(執筆時点では3.0.0)と同じものをGitHubからダウンロードする。chainer-master.zipをダウンロードして展開し、C:\bin\chainer などに置く。

Chainer付属の例で画像識別をしてみる

256x256ピクセルの画像を用意し、各画像を分類する。他の画像サイズは受け付けないので、あらかじめ画像サイズを256x256に変換しておく。

入力画像の分類を列挙したテキストファイルを作る

画像ファイル名の絶対パス 半角空白 分類(0以上の整数)} を各行に並べたテキストファイルを作る。Windows版Pythonはディレクトリの区切り記号として、バックスラッシュ\の代わりにスラッシュ/を使っても受け付けるようだ。

/working_dir/images/dir_a/sample_a_x.bmp 0
/working_dir/images/dir_b/sample_b_y.bmp 1

上記のテキストファイルを訓練用画像(train.txt)とテスト用画像(test.txt)に分ける。

訓練用画像の中間値を作成する

$ python C:\bin\chainer\examples\imagenet\compute_mean.py train.txt

正しく起動できれば、実行したディレクトリに mean.npy が生成される。

訓練しつつ、テストも行う

$ python C:\bin\chainer\examples\imagenet\train_imagenet.py -E 1000 --test train.txt test.txt

正しく起動できれば、このように進捗が表示される。

epoch       iteration   main/loss   validation/main/loss  main/accuracy  validation/main/accuracy  lr
0           1           7.20996     5.91431               0              0.166667                  0.01
   ...
43          141         0.770011    0.576001              0.6875         0.666667                  0.01