7_推測_keras
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| 7_推測_keras [2017/11/17] – [0. 前回終了時の画面] adash333 | 7_推測_keras [2018/10/07] (現在) – 外部編集 127.0.0.1 | ||
|---|---|---|---|
| 行 66: | 行 66: | ||
| - | ==== 1. モデルの学習 ==== | + | ==== 1. 推測したい画像の準備 ==== |
| + | MNSIT画像は、なぜか、黒の背景に白で手書きの数字が書いてあるような画像であるので、Windows 8.1に付属している「ペイント」で、適当な手書き数字を作成し、/ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ==== 2. モデルの学習 ==== | ||
| 以下のコードを入力して、Shift + Enterを押します。 | 以下のコードを入力して、Shift + Enterを押します。 | ||
| < | < | ||
| - | #5 結果の出力(Keras) | + | # predict.py |
| - | score = model.evaluate(x_test, | + | #7 推測 |
| - | print(' | + | |
| - | print(' | + | |
| - | </ | + | |
| - | 以下のような画面になります。 | + | %matplotlib inline |
| - | {{: | + | from keras.preprocessing import image |
| + | import numpy as np | ||
| + | import sys | ||
| + | from PIL import Image | ||
| + | import matplotlib.pyplot as plt | ||
| + | from keras.models import model_from_json | ||
| - | model.evaluate()関数により、入力値における損失値(損失関数に(x_test, y_test)の組み合わせを入力して出てきた結果)を返します。 | + | # load model and weight |
| + | model = model_from_json(open(' | ||
| + | model.load_weights(' | ||
| - | 詳細はよく分かりませんが、score[0]にlossを、score[1]にaccuracyを持つようなリストを返すようです。 | + | filepath = " |
| + | # 画像を読み込み、グレースケールに変換し、28x28pixelに変換し、numpy配列へ変換する。 | ||
| + | # 画像の1ピクセルは、それぞれが0-255の数値。 | ||
| + | image = np.array(Image.open(filepath).convert(" | ||
| + | print(filepath) | ||
| + | # さらにフラットな1次元配列に変換。 | ||
| + | image = image.reshape(1, | ||
| + | result = model.predict_classes(np.array([image / 255.])) | ||
| + | print(" | ||
| - | lossは、おそらく、x_testの画像10000枚とその正解ラベルy_testのセットを、損失関数に入れたときの値(損失)だと思われます。(ググってもはっきりとした記載は見つけることはできませんでしたが、たぶんそれで間違いないと思います。) | + | # 画像を表示 |
| + | im = Image.open(filepath) | ||
| + | plt.imshow(np.array(im), | ||
| + | </ | ||
| - | KerasでのModel学習の手順は上記でおしまいです。 | + | 以下のような画面になります。 |
| - | <wrap hi> | + | {{: |
| - | 初めての方は、次は、</ | + | |
| - | </ | + | |
| - | ===== accuracyとlossについて ===== | + | {{: |
| - | accuracy(全体正解率)予測測に対して答えがどのくらいあってたか | + | ちゃんと、「2」と予測できたようです。 |
| + | |||
| + | 上記コードにはコメントで解説を書かせていただいておりますが、今回のポイントとしては、 | ||
| < | < | ||
| - | Accuracy=(TP+TN)/(TP+FP+TN+FN) | + | from keras.models import model_from_json |
| + | |||
| + | # load model and weight | ||
| + | model = model_from_json(open(' | ||
| + | model.load_weights(' | ||
| </ | </ | ||
| + | の部分で、modelと、modelのweightを読み込んでいるところです。この2つの中身は、前回の< | ||
| + | |||
| + | Kerasで推測の手順は上記でおしまいです。 | ||
| + | |||
| + | そして、KerasでMNISTシリーズは、一旦ここで終了となります。グレースケール画像の分類であれば、今までのコードのほぼコピペで、実行することができるようになります。 | ||
| + | |||
| + | しかし、自前データで画像分類をする場合は、画像の前処理を行って、Kerasが理解できる形に変換しておかないといけません。 | ||
| + | |||
| + | 次は、自前データでKerasで画像分類を行う方法の解説の例として、MNISTの画像データから、Keras用データセットの作成について説明したいと思います。ご興味のある方は、ぜひ、< | ||
| - | 詳細は以下のページが参考になります。 | ||
7_推測_keras.1510920738.txt.gz · 最終更新: 2018/10/07 (外部編集)
