Up 1枚の画像に対する prediction 作成: 2021-04-19
更新: 2021-04-19


    これは,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)