FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

Microsoft CNTK 2.0のチュートリアル試行 (FeedForwardNet.py)

f:id:msyksphinz:20170606011549p:plain

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チュートリアルの全ソースコードがアップロードされている。とりあえず実行してみた。

github.com

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

うーん、それっぽい。