前回は動かすことだけで満足していましたが、今回は正しい精度が出せるように設計してみました。
まだ簡単なものですが
やってみた
データセット
前回と比べて多めに用意しました。
実際には急激に増やせないので、水増ししています。
以下の記事を参考にしました。
qiita.com
言語を超える力のアプリで使っているデータセットも実際に水増ししています。
設計しなおしてみました
こんな感じです。
- Affine_1のOutShapeを1200に
- 途中でBatchNormalizationを行う
- Affine_2のOutShapeを100に
- LossをSoftmaxCrossEntropyに
これは実際のTensorFlowで実装した言語を超える力とは異なる設計です。
同じような設計にするかどうかも含めて、今後検討します。
学習
デフォルトで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がマイナスになっていたので、おかしい値になっていました。
今回は正しい結果になっていそうです。
評価
SoftmaxCrossEntropyを採用しているので、y:labelにラベルの値、y'_0以下にsoftmaxの値が表示されます。
softmaxの値が各ラベルの評価で、このラベルに該当していると思われれば値が高くなります。
見る限り、評価が間違っている場合でもsoftmaxの値がかなり高くなっているので、かなり正しい学習ができていることがわかります。
感想と今後の予定
いろいろ試しながら設計を行うことができました。
ただし、ディープラーニングの用語などがまだ理解できていないものが多く、試行錯誤して同じようなものを設計するのが精いっぱいでした。
サンプルではもっと複雑なニューラルネットワークが設計されているので、それらを試してみたいのですが、いかんせん用語がわからない。
少し本などを読んで勉強したいと思います。
この辺りの本がいいのかな・・・まだ読んでないのでメモとして残しておきます。

- 作者: 岡谷貴之
- 出版社/メーカー: 講談社
- 発売日: 2015/12/04
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
今回はここまで
それではー
追記:2017/08/25
言語を超える力と同じように畳み込みニューラルネットワークを実装してみた。
blog.gelehrte.com