Kerasを利用した簡単ディープラーニング

以前の投稿でKerasのインストール方法をまとめました

ディープラーニングが注目されている昨今です 私もディープラーニングがしたい!ということで簡単にできないかなぁと色々試したところKerasが簡単に作ることができました(つよい) 手始めにKerasの環境をインストールする方法についてメモしておきます

この記事ではkerasを使って簡単な学習プログラムを作り、グラフ表示やモデルの可視化方法についてまとめたものを記載します

実装したプログラムの概要

今回作成したプログラムは3個のデータを入力とし、学習を経て最後に4つ出力を行うプログラムです(合計値なら深層学習しなくても良いですが練習なので)

入力には、[0, 1, 0]や[1, 0 ,0]といったデータを入力としています

この3つを合計を出力としています(つまり3つの入力であるため、出力パターン(合計のパターン)は ‘0’ ‘1’ ‘2’ ‘3’となるため、出力を4パターンとしている)

出力について少し深掘りすると下記のように出力となります

0のとき : [1, 0, 0, 0]

1のとき : [0, 1, 0, 0]

2のとき : [0, 0, 1, 0]

3のとき : [0, 0, 0, 1]

上記のように値ごと区別(ラベル)されています

簡単なイメージ図は下記のような感じ

プログラム

前回の記事にてkerasを導入すればコピペで動くと思います

学習後は学習とテストデータに使用していない未知のプログラムを入れてどれくらいの認識力であるかを出力しています

プログラムの詳細

最初に学習用データを作成しています

今回は1000個のデータを作成し、ランダムで入力データを作っています

学習用データを作成後、学習用データにラベルを作らなければならないためラベルを作ります

ランダムで作ったデータの合計値を計算し、np_utils.to_categoricalのでラベルにしています

EX:合計値が2の時は、[0, 0, 1, 0]と変換されます

学習用データを作成後、学習モデルを設計します

入力データが簡単なので隠れ層が一層の簡単な実装です

kerasはaddで層や活性化を記述することができるためとても簡単です

注意点として最初のaddのinput_dimは入力するデータと一致しなければなりません(当たり前だけど)

今回は入力データが3個なのでinput_dimには3が入っています

最後の最後の出力はラベルと同じ数です

Activation(活性化関数)について触れると長くなるため、下記を参照すると良いです

無から始める Keras のもくじは( # 前回のおさらい (

model.compileとmodel.fit等の引数はコメントアウトでも説明していますが、公式をみると詳しく書いてあります

モデル作成後、テストデータを作成しどれくらいの認識力があるか評価します

はじめに学習に使っていない未知のデータとラベルをつくります

作り方は学習データと作り方は同じです

一応printにて作られたデータを表示しています

モデルデータが未知のデータに対して認識しているか確認します

printにてscoreとscoreを元に合計値を出力(ScoreVal)しています

最後に今回作ったモデルの図と学習済みのモデルの保存をしています

コメントアウトしていますが、外すと精度と損失のグラフを表示します

出力

単純な学習なので簡単にlossや精度が良くなると思います

AnserVal(未知データの合計)とScoreVal(学習済みモデルから出力された値)が同一であることから認識はできているようです

作成したモデルは下記のようになります

学習済みモデルを他のプログラムで利用する

作成したプログラムは学習済みモデルを保存するプログラムも入れています

この保存したモデルを他のところで使いたいときは下記のようにします

学習済みモデルをロード後、認識テストするプログラムを下記にのせておきます

まとめ

ざっくりではありますが、kerasを利用した簡単なディープラーニングを記述しました

ディープラーニングで重要となる活性化やドロップアウト、については深く掘り下げていないため公式サイトや参考文献を参照してください

前回も紹介したとおりkerasはCNNとRNNもすることができるため、やってみてみてはいかがでしょうか

また、今回作ったプログラムはGitHubにのせているため参考にしてみてください

参考文献

スポンサーリンク