ユーザ用ツール

サイト用ツール


7_推測_keras

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
7_推測_keras [2017/11/05]
adash333 [(7)学習結果を用いて推測する(Keras)]
7_推測_keras [2018/10/07] (現在)
ライン 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 (外部編集)