日曜プログラミング

ゲーム好きの中の人が、自分が作りたいアプリを作る記録です

Neural Network Consoleでエオルゼア文字を解析してみた (その2)

前回は動かすことだけで満足していましたが、今回は正しい精度が出せるように設計してみました。
まだ簡単なものですが

やってみた

データセット

前回と比べて多めに用意しました。
実際には急激に増やせないので、水増ししています。
以下の記事を参考にしました。
qiita.com

言語を超える力のアプリで使っているデータセットも実際に水増ししています。


設計しなおしてみました

こんな感じです。

  • Affine_1のOutShapeを1200に
  • 途中でBatchNormalizationを行う
  • Affine_2のOutShapeを100に
  • LossをSoftmaxCrossEntropyに

これは実際のTensorFlowで実装した言語を超える力とは異なる設計です。
同じような設計にするかどうかも含めて、今後検討します。

f:id:gelehrtecrest:20170823030816p:plain

学習

デフォルトで100回ループするようになっているので、そのまま学習

結果は

2017-08-23 02:45:08,255 [nnabla]: epoch 100 of 100 cost=0.004701 {train_error=0.006511, valid_error=0.013755

となりました。前回はcostおよびerrorがマイナスになっていたので、おかしい値になっていました。
今回は正しい結果になっていそうです。

f:id:gelehrtecrest:20170823025419p:plain

評価

SoftmaxCrossEntropyを採用しているので、y:labelにラベルの値、y'_0以下にsoftmaxの値が表示されます。
softmaxの値が各ラベルの評価で、このラベルに該当していると思われれば値が高くなります。

見る限り、評価が間違っている場合でもsoftmaxの値がかなり高くなっているので、かなり正しい学習ができていることがわかります。

感想と今後の予定

いろいろ試しながら設計を行うことができました。
ただし、ディープラーニングの用語などがまだ理解できていないものが多く、試行錯誤して同じようなものを設計するのが精いっぱいでした。

サンプルではもっと複雑なニューラルネットワークが設計されているので、それらを試してみたいのですが、いかんせん用語がわからない。
少し本などを読んで勉強したいと思います。
この辺りの本がいいのかな・・・まだ読んでないのでメモとして残しておきます。


今回はここまで
それではー

追記:2017/08/25
言語を超える力と同じように畳み込みニューラルネットワークを実装してみた。
blog.gelehrte.com


スポンサーリンク