ユーザ用ツール

サイト用ツール


7_推測_keras

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
7_推測_keras [2017/11/05] – [(7)学習結果を用いて推測する(Keras)] adash3337_推測_keras [2018/10/07] (現在) – 外部編集 127.0.0.1
行 27: 行 27:
 2017/8/5 2017/8/9 \\ 2017/8/5 2017/8/9 \\
 http://twosquirrel.mints.ne.jp/?p=19500 http://twosquirrel.mints.ne.jp/?p=19500
 +
 +
 +
 +===== 開発環境 =====
 +Windows 8.1\\
 +Anaconda \\
 +Python 3.5\\
 +Tensorflow 1.4\\
 +Keras 2.0.9\\
 +
 +Keras2.0のインストール方法は[[windowsにkeras2.0をインストール]]をご覧下さい。
 +
 +このページは、[[(6)学習結果の保存(Keras)]]の続きであり、今回は、学習結果を用いて、推測を行っていきます。
 +
 +===== 手順 =====
 +
 +
 +==== 0. 前回終了時の画面 ====
 +[[(6)学習結果の保存(Keras)]]終了時は、以下のような状態となっています。
 +
 +{{:pasted:20171110-070427.png}}
 +
 +今回は、新しいipynbファイルを作成し、
 +
 +{{:pasted:20171117-210933.png}}
 +
 +predict_MNIST_MLP という名前に変更します。
 +
 +{{:pasted:20171117-211034.png}}
 +
 +predict_MNIST_MLP.ipynb は、train_MNIST_MLP.ipynb と同じフォルダにあります。
 +
 +{{:pasted:20171117-211127.png}}
 +
 +以下の状態から始めます。
 +
 +{{:pasted:20171117-211216.png}}
 +
 +
 +==== 1. 推測したい画像の準備 ====
 +MNSIT画像は、なぜか、黒の背景に白で手書きの数字が書いてあるような画像であるので、Windows 8.1に付属している「ペイント」で、適当な手書き数字を作成し、/testSet/ フォルダに、「img_1.jpg」という名前で保存します。
 +
 +{{:pasted:20171117-211948.png}}
 +
 +{{:pasted:20171117-212009.png}}
 +
 +==== 2. モデルの学習 ====
 +以下のコードを入力して、Shift + Enterを押します。
 +
 +<code>
 +# predict.py
 +#7 推測
 +
 +%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
 +
 +# load model and weight
 +model = model_from_json(open('apple_orange_model.json').read())
 +model.load_weights('apple_orange_weights.h5')
 +
 +filepath = "testSet/img_1.jpg"
 +# 画像を読み込み、グレースケールに変換し、28x28pixelに変換し、numpy配列へ変換する。
 +# 画像の1ピクセルは、それぞれが0-255の数値。
 +image = np.array(Image.open(filepath).convert("L").resize((28, 28)))
 +print(filepath)
 +# さらにフラットな1次元配列に変換。
 +image = image.reshape(1, 784).astype("float32")[0]
 +result = model.predict_classes(np.array([image / 255.]))
 +print("result:", result[0])
 +
 +# 画像を表示
 +im = Image.open(filepath)
 +plt.imshow(np.array(im), cmap='gray')
 +</code>
 +
 +以下のような画面になります。
 +
 +{{:pasted:20171117-213239.png}}
 +
 +{{:pasted:20171117-213300.png}}
 +
 +ちゃんと、「2」と予測できたようです。
 +
 +上記コードにはコメントで解説を書かせていただいておりますが、今回のポイントとしては、
 +
 +<code>
 +from keras.models import model_from_json
 +
 +# load model and weight
 +model = model_from_json(open('apple_orange_model.json').read())
 +model.load_weights('apple_orange_weights.h5')
 +</code>
 +の部分で、modelと、modelのweightを読み込んでいるところです。この2つの中身は、前回の<wrap hi>[[(6)学習結果の保存(Keras)]]</wrap>で保存した名前と一致させる必要があります。
 +
 +Kerasで推測の手順は上記でおしまいです。
 +
 +そして、KerasでMNISTシリーズは、一旦ここで終了となります。グレースケール画像の分類であれば、今までのコードのほぼコピペで、実行することができるようになります。
 +
 +しかし、自前データで画像分類をする場合は、画像の前処理を行って、Kerasが理解できる形に変換しておかないといけません。
 +
 +次は、自前データでKerasで画像分類を行う方法の解説の例として、MNISTの画像データから、Keras用データセットの作成について説明したいと思います。ご興味のある方は、ぜひ、<wrap hi>[[Keras2用自前データの準備]]</wrap>へお進みください。
 +
 +
  
  

7_推測_keras.1509920923.txt.gz · 最終更新: 2018/10/07 (外部編集)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki