2016/04/02

[DL][cntk]NDLを書いてみよう (4)

前回、チュートリアルのロジスティック回帰を見ていたが、そのネットワークをSimple2dで試すのを忘れていた。
前はエラーのところしか見ていなかったけど、係数が予想通りx軸に平行となるのかは見ておきたいところだ。

y = -0.0482035205 - 0.600052118 * x1 - 10.5671721 * x2

予想と違いましたな。。。
いや、ちょっと待った。
変数が2つあるけど、これはなんだっけ?
チュートリアルによると、

  • y = mx + b
    • y = x2
    • x = x1
    • m = (-W_1 / W_2)
    • b = –B / W_2

だそうだ。

だからこの式は、

y = (0.600052118 / (-10.5671721)) * x + (0.0482035205 / (-10.5671721))

となる。

graph.tkでグラフにしてみると、この赤線になった。

image

青線はテストデータの元になったグラフだ。
x軸にかなり平行な直線と言ってよかろう。


さて、NDLに戻ろう。

その前に、LDimのことを解決しておく。
以前、LDim=2にしないと動かない、と書いたのだが、このチュートリアルはLDimが1のままで、ちゃんと動いているのだ。

見比べながら変更したところ、labelsに「labelType=regression」を書くとLDim=1でも動くことがわかった。
labelsは、くくりで言うとReader blockになる。
labelTypeは、こちら
Categoryか、Regressionか、None。
チュートリアルはロジスティック回帰だから、Regressionだったのだろう。
Categoryは、labelsみたいにcategoryというブロックを自分で作って、そこに記載するような感じがする。
labelsのデータはfloating pointで、Categoryの場合は整数部分がラベルマッピングテーブルのインデックス値に変換される、とある。

labelTypeの説明が、

labelType – [{Category},Regression,None] the type of label

となっていたから、Categoryがデフォルト値で、マッピングファイルにラベルが2つ書かれているから、LDimが2じゃないとうまく行かなかった、ということか?

じゃあ、Regressionを指定した場合はマッピングファイルの指定をしなくてもうまく動作してほしいのだけど、EXCEPTIONが発生していた。
これについては、何か説明を付けることができるのだろうか?

 

こういうねー、ネットワークとかの前に気になることが出てくると、なかなか着手できないのだ。
勉強しようとしたら机の周りが散らかっているのが気になり出すのと同じかもしれない。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。