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