前回は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で動かしたのだから、自分でネットワークを構築したりして学習させてみたいです。

