前回は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
2
3
set PATH="%CD%\Release";%PATH%
cd Examples\Other\Simple2d\Data
cntk configFile=../Config/Simple.cntk

実行後、エラーがなければ 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で動かしたのだから、自分でネットワークを構築したりして学習させてみたいです。