これは,test_images が<画像が1枚だけ>の場合である。
test_images[0] を「1枚の画像」として用いることにする。
test_images[0] を,ファイル名 "test_image_0.jpg" で,カーレントディレクトリに保存:
test_image_0.jpg を取り込む:
>>> img = ./test_image_0.jpg
取り込まれたことの確認:
>>> print(img.shape)
(28, 28)
tf.keras モデルは、サンプルの中のバッチ(batch)あるいは「集まり」について予測を行うように作られている。そのため、1枚の画像を使う場合でも、リスト化する必要がある。
画像を1枚だけのバッチのメンバーにする:
>>> img = (np.expand_dims(img,0))
メンバーになっていることの確認:
>>> print(img.shape)
(1, 28, 28)
prediction の形式が整ったので,prediction を行う:
>>> predictions_single = model.predict(img)
model.predict メソッドの戻り値は、リストのリスト。──リストの要素のそれぞれが、バッチの中の画像に対応する。
いまは,バッチの中の画像は1つだけなので,戻り値がつぎのようになる:
>>> print(predictions_single)
[[1.5098491e-05 1.3999762e-08 3.2097114e-07 1.3058383e-07 1.5631826e-06
3.1381049e-03 3.2296265e-07 1.1332618e-01 1.2275040e-04 8.8339549e-01]]
さて,model が最大確率を与えた類は正しい類か?
最大確率を与えた類は:
>>> np.argmax(predictions_single[0])
9
これは,既に見たように ( prediction),当たりである。
グラフに表してみる:
>>> import matplotlib.pyplot as plt
>>> plot_value_array(0, predictions_single, test_labels)
_ = plt.xticks(range(10), class_names, rotation=45)
|