Translate

#81 予測

このSectionでは、トレーニングされたモデルを使用して、テストデータのいくつかの画像に関する予測を行っていきます。





公式チュートリアルでは、下記の流れで予測を行い、確認をしています。本Sectionでも、この流れに沿って、Keras3に書き換えて体験していきましょう。

 1.出力層にすべてのラベルの確率を出力するレイヤーを追加した予測用のモデルを新たに作る

2.そのモデルを用いて、テスト画像(10,000枚)に対する予測を一括で行う

3.特定のサンプルの結果を見てみる

4.どのラベルが一番確信度が高いかを出力する


1.出力層にすべてのラベルの確率を出力するレイヤーを追加した予測用のモデルを新たに作る

出力層にすべてのラベルの確率を出力するレイヤーを追加した予測用のモデルを『probability_model』と宣言します。

公式チュートリアルでは、①のコードを使っていますが、Keras3で書き換えるために『tf.keras』の部分を『keras』に変更します。


このコードは、元のモデルの出力(ロジット)を、人間にとって直感的に理解しやすい『確率(0%〜100% / 合計が1.0)』に変換する新しい予測専用モデルを作成するという処理を行っています。



2.そのモデルを用いて、テスト画像(10,000枚)に対する予測を一括で行う

次に、下記を用います。

モデル名.predict(データ名)

作成した確率変換用モデル『probability_model』を使い、テスト画像(10,000枚)に対する分類予測を一括で実行し、その結果(確率)を取得する処理を行います。結果は、『predictions』と宣言します。 『predictions』と宣言しなくてもいいのですが、他のメンバーにもわかるように、 『predictions』に近い表現をすることをお勧めします。



結果は、下記のようになります。



Kerasの predict() メソッドのデフォルトのバッチサイズ(1回にまとめて処理する画像枚数)は32枚です。10,000枚を32 枚ずつ処理すると、10000/32=312.5となり、端数を切り上げて合計313回のステップ(バッチ処理)で全10,000枚の予測を完了したことを表しています。


3.特定のサンプルの結果を見てみる

『probability_model』がテスト用データセットの画像のひとつひとつを分類予測した結果を見るためには、下記のコードを用います。下記は、最初の画像の予測を見るコードです。


結果は下記のように10個の数字の配列で表されています。これは、その画像が10個ある衣料品の種類のどれに該当するかの「確率」を表しています。


指数表記になっていて見にくいので、小数点4位までの小数で表示してみましょう。

下記のコードで、指数表示を通常の小数に変換することができます。Python 3.6より新しく『f文字列』という機能が導入されました。これにより、文字列内に数値や式を埋め込むことができます。

f"{数値:.有効数字f}"

これをforループで繰り返します。



この結果を見ると、10番目(Ankle boot)の確率がダントツで大きくなっています。


4.どのラベルが一番確信度が高いかを出力する

どのラベルが一番確率が高いかを直接見ることもできます。


結果は、下記のように表示されます。1番目は『0』ですから、10番目のラベル、すなわち『Ankle boot』の確率が一番高いことがわかります。
















コメント