Deep-learning-with-keras-evaluating-model-performance

提供:Dev Guides
移動先:案内検索

モデルのパフォーマンスの評価

モデルのパフォーマンスを評価するには、次のように evaluate メソッドを呼び出します-

loss_and_metrics = model.evaluate(X_test, Y_test, verbose=2)

モデルのパフォーマンスを評価するには、次のように evaluate メソッドを呼び出します-

loss_and_metrics = model.evaluate(X_test, Y_test, verbose=2)

以下の2つのステートメントを使用して、損失と精度を出力します-

print("Test Loss", loss_and_metrics[0])
print("Test Accuracy", loss_and_metrics[1])

上記のステートメントを実行すると、次の出力が表示されます-

Test Loss 0.08041584826191042
Test Accuracy 0.9837

これは、98%のテスト精度を示しています。 ケースの2%で手書きの数字が正しく分類されないというのは、私たちにとって何を意味するのでしょうか。 また、精度と損失の指標をプロットして、モデルがテストデータでどのように実行されるかを確認します。

精度メトリックのプロット

トレーニング中に記録された*履歴*を使用して、精度メトリックのプロットを取得します。 次のコードは、各エポックの精度をプロットします。 プロット用にトレーニングデータの精度(「acc」)と検証データの精度(「val_acc」)を取得します。

plot.subplot(2,1,1)
plot.plot(history.history['acc'])
plot.plot(history.history['val_acc'])
plot.title('model accuracy')
plot.ylabel('accuracy')
plot.xlabel('epoch')
plot.legend(['train', 'test'], loc='lower right')

出力プロットを以下に示します-

プロット精度メトリック

図からわかるように、精度は最初の2つのエポックで急速に増加し、ネットワークが速く学習していることを示しています。 その後、曲線は平坦になり、モデルをさらにトレーニングするために必要なエポックが多すぎないことが示されます。 一般に、トレーニングデータの精度(「acc」)が改善し続けている一方で、検証データの精度(「val_acc」)が悪化している場合、過剰適合が発生しています。 モデルがデータを記憶し始めていることを示しています。

また、損失メトリックをプロットして、モデルのパフォーマンスを確認します。

損失メトリックのプロット

ここでも、トレーニング(「損失」)データとテスト(「val_loss」)データの両方に損失をプロットします。 これは、次のコードを使用して行われます-

plot.subplot(2,1,2)
plot.plot(history.history['loss'])
plot.plot(history.history['val_loss'])
plot.title('model loss')
plot.ylabel('loss')
plot.xlabel('epoch')
plot.legend(['train', 'test'], loc='upper right')

このコードの出力を以下に示します-

損失指標のプロット

図からわかるように、トレーニングセットの損失は最初の2つのエポックで急速に減少します。 テストセットの場合、損失はトレーニングセットと同じ割合で減少するわけではありませんが、複数のエポックでほぼ一定のままです。 これは、モデルが目に見えないデータにうまく一般化していることを意味します。

次に、トレーニング済みモデルを使用して、テストデータの数字を予測します。