#83 トレーニングされたモデルを使用する
最後に、体験したトレーニング済みモデルを使って、ある1個の画像に対する予測を行ってみましょう。 1.予測する画像の選択 テスト用データセットの2番目の画像を選択します。 念のため、選んだ『test_image[1]』の縦・横のピクセル数を確認してみると、縦28ピクセル × 横28ピクセルで、トレーニング済みモデルで予測することが可能であることが確認できました。 この確認作業は、予測をする際に重要です。今回は、同じデータセットをトレーニング用とテスト用に分割したので、縦・横のピクセル数が揃っていることはわかっていますが、実際の場面では、予測用の新たなデータを使うことが多いので、このような確認作業をルーティンにしていきましょう。 2.予測する画像の目視 選んだ画像がどんなものか、Section 4『データの前処理』のところで書いたコードを活用して、実物を見てみます。 3.予測する画像の前処理 今回のKeras のモデルは、『 3次元テンソル 』 を予測するように作ってきました。そのため、内部では常に『3次元テンソル』のデータを待ち受けています。 もし、次元を追加せずに1枚の画像を probability_model.predict(img) に渡してしまうと、モデルは「データの形が違う!」とエラーを起こしてしまいます。 そのため、「1枚だけの画像だけど、形の上では『枚数が1のデータの塊』ですよ」と見せかけるために、『 np.expand_dims 』を使って先頭に次元を追加します。 『 np.expand_dims(配列, 軸の番号) 』は、指定した位置に、長さ「1」(すなわち枚数が1)の新しい次元(軸)を追加する NumPy の関数です。 4.予測結果 さて、予測するデータの次元を『3次元テンソル』 にできたところで、予測をしてみましょう。 上記の結果は直感的にわかりにくいので、『f文字列』を使って、通常の小数に変換してみます。 この際、『for p in predictions_single:』でループを回すと、エラーが出てしまいます。 この原因は、『predictions_single』が、2次元の配列(形が (1, 10))になっているためです。 先ほどのステップで『np.expand_dims()』を使って画像にバッチの次元を追加したため...