ユーザ用ツール

サイト用ツール


7_推測_keras

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
7_推測_keras [2017/11/09] – [0. 前回終了時の画面] adash3337_推測_keras [2018/10/07] (現在) – 外部編集 127.0.0.1
行 45: 行 45:
  
 ==== 0. 前回終了時の画面 ==== ==== 0. 前回終了時の画面 ====
-[[(6)学習結果の保存(Keras)]]終了時、以下のような状態から始めます。+[[(6)学習結果の保存(Keras)]]終了時、以下のような状態となっています。
  
 {{:pasted:20171110-070427.png}} {{:pasted:20171110-070427.png}}
-==== 1. モデルの学習 ====+ 
 +今回は、新しい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を押します。 以下のコードを入力して、Shift + Enterを押します。
  
 <code> <code>
-#5 結果の出力(Keras) +predict.py 
-score = model.evaluate(x_test, y_test, verbose=0) +#7 推測
-print('Test loss:', score[0]) +
-print('Test accuracy:', score[1]) +
-</code>+
  
-以下のような画面になります。+%matplotlib inline
  
-{{:pasted:20171110-045243.png}}+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('apple_orange_model.json').read()
 +model.load_weights('apple_orange_weights.h5')
  
-詳細はよく分かりませんがscore[0]lossをscore[1]accuracyを持つようなリスを返すようです+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])
  
-lossは、おそらく、x_testの画像10000枚とその正解ラベルy_testのセット、損失関数に入れたときの値(損失)だと思われます。(ググってもはっきりとした記載は見つけることはできませんでしたが、たぶんそれで間違いないと思います。)+画像を表示 
 +im = Image.open(filepath) 
 +plt.imshow(np.array(im), cmap='gray'
 +</code>
  
-KerasでModel学習の手順は上記でおしいです。+以下ような画面になります。
  
-<wrap hi> +{{:pasted:20171117-213239.png}}
-初めての方は、次は、</wrap>[[(6)学習結果の保存(Keras)]]<wrap hi>に進んでください。 +
-</wrap>+
  
-===== accuracyとlossについて =====+{{:pasted:20171117-213300.png}}
  
-accuracy(全体正解率)予測対し答えくらいあったか+ちゃんと、「2」と予測できたようです。 
 + 
 +上記コードはコメントで解説を書かせいただいております、今回ポイントとしは、
  
 <code> <code>
-Accuracy=(TP+TN)/(TP+FP+TN+FN)+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> </code>
 +の部分で、modelと、modelのweightを読み込んでいるところです。この2つの中身は、前回の<wrap hi>[[(6)学習結果の保存(Keras)]]</wrap>で保存した名前と一致させる必要があります。
 +
 +Kerasで推測の手順は上記でおしまいです。
 +
 +そして、KerasでMNISTシリーズは、一旦ここで終了となります。グレースケール画像の分類であれば、今までのコードのほぼコピペで、実行することができるようになります。
 +
 +しかし、自前データで画像分類をする場合は、画像の前処理を行って、Kerasが理解できる形に変換しておかないといけません。
 +
 +次は、自前データでKerasで画像分類を行う方法の解説の例として、MNISTの画像データから、Keras用データセットの作成について説明したいと思います。ご興味のある方は、ぜひ、<wrap hi>[[Keras2用自前データの準備]]</wrap>へお進みください。
  
-詳細は以下のページが参考になります。 
  
  

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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki