質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.86%

機械学習(ディープラーニング)で手書き文字認識を実施してるのですが・・・

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 1,592

nobita

score 41

現在、機械学習を学習していてテストデータを使用して学習させたモデルがあります。
そのモデルを使用して、評価を実施したいのですが、ファイルの読み込みPASSを下記のように記述しました。。。
ライブラリは
import numpy as image_np
from PIL import Image
を使用して実施したいです。

モデルを作成しているときは、書籍等を参考にして作成したのですが、(サンプルデータ_ラベルがついているもの)
いざ、実践的に、自分PC上のフォルダ(./number_file/*.jpg)に4つ画像ファイルがあります。から読み込もうとしたときどうしたらいいのか。そこからどうに数値化したらいいのか。
アドバイスお願いします。

modelに作成したモデルを載せておきます 

path = glob.glob("./number_file/*.jpg")
N = 4
img_list =[]
for i in range(N):
    img = image_np.array(Image.open(path[i]))

    img_list.append(img)
    #print(img)
    #img.show()



print(img.shape)
%matplotlib inline
#from __future__ import division, print_function

from keras import backend as K
from keras.datasets import mnist
from keras.layers import Activation, Dense, Dropout
from keras.layers.normalization import BatchNormalization
from keras.models import Sequential
from keras.utils.np_utils import to_categorical
import numpy as np
from sklearn.metrics import classification_report, confusion_matrix
# Kerasに付属の手書き数字画像データをダウンロード
np.random.seed(0)
(X_train, labels_train), (X_test, labels_test) = mnist.load_data()
# 各画像は行列なのでベクトルに変換→X_trainとX_testを作成
X_train = X_train.reshape(len(X_train),-1)
X_test = X_test.reshape(len(X_test),-1)
# ラベルをone-hotベクトル(値がひとつだけ1で他が0のベクトル)に変換→Y_trainとY_testを作成
Y_train = to_categorical(labels_train)
Y_test = to_categorical(labels_test)
# モデルの準備
model = Sequential()
model.add(Dense(10,input_shape=(784,)))
model.add(Activation("softmax"))
model.compile(loss="categorical_crossentropy",optimizer="adam",metrics=["accuracy"])
# Trainingの実施
model.fit(X_train,Y_train,batch_size=128,nb_epoch=10,verbose=1)
# Test dataを用いてモデルを評価(accuracyを算出)
_,acc = model.evaluate(X_test,Y_test,verbose=0)
print("accuracy:{}".format(acc))
# Classification_report関数で評価結果を表示
labels_pred = model.predict_classes(X_test,verbose=0)
print(confusion_matrix(labels_test,labels_pred))
print(classification_report(labels_test,labels_pred))
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

ご質問の意図を組みきれていないかもしれませんが,学習モデルを保存している前提であれば,以下のコードで動作すると思います.

import numpy as np

from keras.models import load_model
from PIL import Image
from glob import glob

paths = glob.glob("./number_file/*.jpg")
model_path = "モデルのパスを指定."

model = load_model(model_path)

for path in paths:
    img_pil = Image.open(path)
    img = np.array(img_pil)

    X = img.ravel()

    pred_prob = model.predict(X)

    pred = np.argmax(pred, -1)

    print("{0}の予測結果は{1}です.".format(path, pred))

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/04 17:44

    回答ありがとうございます。
    モデルは保存はしていなくて、同じjupyternotebookにあります。
    モデルパスを指定の部分をモデルにすればいいんですね!!

    キャンセル

  • 2018/12/04 17:56

    それであれば,model_path=....とmodel=load_model(...)を除いてもらえばよいと思います.

    キャンセル

  • 2018/12/05 12:04

    ありがとうございます!
    解決できました!☻

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.86%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる