前回はCNTKをソースコードからビルドしました。今回は実際にテストしてみます。
テスト
まず実行
Microsoftが動作検証用にサンプルをCNTKに置いてくれていますので既にクローン済みです。
サンプルは CNTK/Examples/Other/Simple2d/ になります。
1 | https://github.com/Microsoft/CNTK/tree/master/Examples/Other/Simple2d |
このサンプルについて、
This example trains a simple network and can be directed to use either CPU or GPU, which helps quickly ensure that CNTK is functioning properly.
1 | 訳:このサンプルは単純なネットワークの学習、並びにCPUとGPUのどちらを使うかを指示しCNTKが正しく動作することを簡単にチェックします。 |
とあります。検証用ですね、まさに。
次にCNTKのフォルダに移動します。CNTK.sln が存在するディレクトリです。
その後、次のコマンドをたたくと、テストが実行されます。
1 | set PATH="%CD%\Release";%PATH% |
実行後、エラーがなければ COMPLETED の文字が出るはずです。
学習が完了したので、次にもう一度学習をしたい場合は、学習済みのモデル、つまり今回の出力を削除する必要があります。
1 | del ..\Output\Models\*.* |
GPUを使う
今度GPUを使ってみます。前段では使っていなかったようで、GPUを使うように指示したビルドでも、明示的に指示する必要があるようです。
まずは、出力を削除してください。
次に下記のコマンドをたたきます。
1 | cntk configFile=../Config/Simple.cntk deviceId=auto 1> out.txt 2>&1 |
するとOut.txtに出力結果がリダイレクトされるので中を確認します。
テキスト中に
1 | SimpleNetworkBuilder Using GPU 0 |
というのがあるはずです。ただし、0の部分は環境依存です。
通常この部分は
- -1 : CPUを使用。デフォルト値
- 0以上 : GPUを使用。deviceIdに対応した値で例えば deviceId=0ならGPU 0 を示すとのこと。複数台のGPUを搭載している場合でしょう。
- auto : GPUを自動選択
ということです。
私の環境なら、
1 | cntk configFile=../Config/Simple.cntk deviceId=0 1> out.txt 2>&1 |
は、先のコマンドと同一の結果を出します。
Conclusion
無事に動いていることが確認できました。
折角Windowsで動かしたのだから、自分でネットワークを構築したりして学習させてみたいです。