CNTKの使い方を勉強しているが、どうも上手く行かない。やはりユーザが少ないからか、きちんとフィードバックがかかっていない気がするな。
CNTK 2.0からはPythonインタフェースが利用できるようになった。Pythonインタフェースでは、TensorFlowと同様にネットワークを構築して学習を実行できる。
Getting started — Python API for CNTK 2.0 documentation
最初の方の数値演算の実行は良いのだが、fnetsを作成して学習を実行してみても、想定通りの答えが出てこない。
- First Basic Use
Getting started — Python API for CNTK 2.0 documentation
チュートリアルでは、最後に以下のように出力されるはずなのだが、
average since average since examples loss last metric last ------------------------------------------------------ 0.693 0.693 25 0.699 0.703 75 0.727 0.747 175 0.706 0.687 375 0.687 0.67 775 0.656 0.626 1575 0.59 0.525 3175 0.474 0.358 6375 0.359 0.245 12775 0.29 0.221 25575 error rate on an unseen minibatch: 0.0
どう考えても、1行しか出てこないよ?
------------------------------------------------------------------- average since average since examples loss last metric last ------------------------------------------------------ Learning rate per minibatch: 0.125 0.917 0.917 0.56 0.56 25
しかもAverage Lossめっちゃ高いし。。。この辺、きちんとドキュメントがそろってくれること期待。
2017/06/07 追記。githubにチュートリアルの全ソースコードがアップロードされている。とりあえず実行してみた。
cd ./CNTK/Tutorials/NumpyInterop $ python ./FeedForwardNet.py Selected CPU as the process wide default device. ------------------------------------------------------------------- Build info: Built time: May 31 2017 17:14:07 Last modified date: Thu May 18 15:42:56 2017 Build type: release Build target: CPU-only With 1bit-SGD: no With ASGD: yes Math lib: mkl Build Branch: HEAD Build SHA1: ade8bc05d30e61160da729aee078e22f8bd4fced Built by Source/CNTK/buildinfo.h$$0 on a4dbcb4fb82a Build Path: /home/philly/jenkins/workspace/CNTK-Build-Linux_2 MPI distribution: Open MPI MPI version: 1.10.3 ------------------------------------------------------------------- Learning rate per minibatch: 0.5 Minibatch[ 1- 128]: loss = 0.582338 * 3200, metric = 28.19% * 3200; Minibatch[ 129- 256]: loss = 0.312840 * 3200, metric = 12.34% * 3200; Minibatch[ 257- 384]: loss = 0.291944 * 3200, metric = 11.28% * 3200; Minibatch[ 385- 512]: loss = 0.266468 * 3200, metric = 10.28% * 3200; Minibatch[ 513- 640]: loss = 0.249985 * 3200, metric = 8.91% * 3200; Minibatch[ 641- 768]: loss = 0.232742 * 3200, metric = 8.94% * 3200; Minibatch[ 769- 896]: loss = 0.230655 * 3200, metric = 8.59% * 3200; Minibatch[ 897-1024]: loss = 0.215014 * 3200, metric = 8.25% * 3200; Finished Epoch[1]: loss = 0.297748 * 25600, metric = 12.10% * 25600 0.647s (39567.2 samples/s); error rate on an unseen minibatch 0.040000
うーん、それっぽい。