Keras MLP を改造して定番パターンを勉強する2


今回もKeras のサンプルプログラム MLP を改造してみることで、さらに定番パターンを勉強したいと思います。

こんにちは cedro です。

先回は、Keras のサンプルプログラム MLP を改造し、オリジナルデータセットを読み込ませ、ロスや精度の推移グラフConfusion Matrixネットワークモデルを描かせてみました

今回は、その次の段階、学習結果を使って、新規データクラス予測をやってみます。

ネットワークモデルは新たなものに変えても良いのですが、MLP は全結合だけの単純なモデルなので、兎に角学習スピードが速いのが魅力的。

とりあえず、一通りやってみるには、MLP の方がいいやという結論に達しました。

ということで、今回もKeras のサンプルプログラム MLP を改造してみることで、さらなる定番パターンを勉強したいと思います。

 

先回のプログラムのおさらい

 

先回作った、 mnist_mlp.py をオリジナルのひらがなデータセットを読み込むように改造したプログラムです。

ロス&精度推移グラフ、Confusion Matrix、ネットワークモデルを描く部分は省いてあります。このプログラムに学習モデルを保存する部分を追加します。

 

これをプログラムの最後に追加します。

学習モデルの保存方法は3種類あり、重みファイルのみを保存する model.save_weights、ネットワークモデルのみ保存する model.to_json()、重み・ネットワークモデルの両方を保存する model.save があります。

ここでは model.save を使い、プログラムのあるフォルダーに save_models フォルダーを作り、その中に hiragana_trained_model.h5 という学習モデルを保存します。

 

学習・評価を実行します。MLP は軽いので何か試すには、便利ですね。約20秒で完了し、学習モデルが保存されました。

 

 

学習結果を元に、予測するプログラムです。predict.py で保存します。

まず、予測したいデータを読み込みます。### set test data のところがそれで、これは学習の時と同じなので、説明は不要ですね。

次に、予測実行をします。### predict のところがそれで、 load_model 学習モデルを読み込み、model.evaluate で予測を実行し、model.predict_classes で予測結果を取得出来ます。ネットワークモデルを記述する必要なし。簡単! 素晴らしい!

最後に、予測結果を表示します。### show predict のところがそれで、予測した画像に実際ラベル予測ラベルを書き加えてmatplotlib で表示します。

 

今回、予測する画像は、学習・評価に使ったものとは別のものを用意します。test  フォルダーを作り、その下に0〜9フォルダーを作って、その中に「あ」〜「こ」を1枚づつ計10枚格納します。

 

プログラムを実行すると、すぐ結果が出て、予測精度100%Test accuracy : 1.0)と表示されました。

 

「あ」の予測結果です。予測結果実際ラベル0予測ラベル0actually:0___predict:0)と表示されました。正解です! 表示を消す度に、次の予測した画像を順次表示します。

keras は必要な機能ブロックを組み合わせるだけで動かせて便利ですね。

では、また。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUTこの記事をかいた人

2017年8月に、SONY Neural Network Console に一目惚れして、ディープラーニングを始めました。初心者の試行錯誤をブログにしています。