clew

どっかの誰かの役にたてばうれしい。

deep learning サンプルコードに自作データを読み込ませて走らせてみた。

deep learning サンプルコードを再び走らせてみる

元ネタはこちら・・・http://clew.hatenablog.com/entry/2013/07/05/020548

リンクは私自身が DEEPLEARNING のサンプルコード DBN.py( Deep Belief Nets (DBN)) を使って トトくじの第637回の結果を予測させようと試みたもの。

この時はまったくコードの意味が分からないにもかかわらず、無謀にもデータ部分だけを差し替えて走らせてみました。結果はエラーが出てあえなく失敗。。
原因も分からずじまいでした。

エラーの原因が分かったよ

もしかして動くかもしれない・・と思って今回、再び挑戦することに。
問題の原因は・・・

# construct DBN

の部分にありました。コードには♯の印でコメントが書いてあります。なので順を追っていけばだいたい何について書かれた部分なのかぐらいは把握できます。
以下がその部分のコード。

dbn = DBN(input=x, label=y, n_ins=2, hidden_layer_sizes=[3, 3], n_outs=2, numpy_rng=rng)

赤色で示した部分・・・ここが属性の数を示しているんじゃないだろうか?ということ。

元々のサンプルコードでは ”6” となっていました。
”X" で示された ARRAY は 要素が6個あります。その数が  # construct DBN の赤色の部分とシンクロしているということです。

私の自作データは要素が2です。なので問題の部分の数字を2に変更しただけです。
結果的にプログラムは動きました。

私のデータは 404行 あります。
”X"と”Y"はともに404行、PREDICT は20行 というデータ。
これを元のサンプルコードのデータと差し替えて動かしたわけです。

ところがここでまたも問題発生。。

NANとは何だ?

なんとすべての出力が ”NAN" になっている。。
これは非数と言うもので、要するにエラーですね。。計算できないよ・・・という時に表示される模様。

f:id:swat777:20130717003055j:plain

とにかく括弧で囲まれた行列の要素数を表していることだけは確かなので少し進歩したかなと。

今回読み込ませたデータについて

ちなみに今回作成したデータは以下の通り。

1、”X" は 対戦カードの情報だけで、チーム名を数字に置き換えたものを [1,7] といったように変換したもの。試合会場とか天候とか、そういった属性を増やせば [1,7,2,6] というようにどんどん要素が増えるだけです。

2、”Y" には ”X" に対応する結果を同じような形式で入力しました。今回はゴール数を変換して入力。たとえばスコアが 2-0 だったら [2,0] というように入力しました。

3、最後は PREDICT です。ここには 上の ”1” と同じ形式で予測する対象の対戦カードを同じような形式で入力します。

この状態で RUN をやりますとエラーなしで結果が出力されます。
今回なぜ計算不能(NAN)になったのか?理由はよくわかりません。おそらく与えたデータが悪かったのか・・

ディープラーニングのサンプルコードについての今回のまとめ

はい、ちゃんとサンプルコードは動きます。
結果はイマイチでしたが”DBNの構成の部分”をちゃんといじると、私の自作データでも動く事は分かりました。

なかなか進みませんがボチボチと勉強します。。おわり。