評估模型效能



為了評估模型效能,我們呼叫evaluate方法,如下所示:

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

為了評估模型效能,我們呼叫evaluate方法,如下所示:

loss_and_metrics = model.evaluate(X_test, Y_test, verbose=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%的情況下,手寫數字將無法被正確分類。我們還將繪製準確率和損失指標,以檢視模型在測試資料上的表現。

繪製準確率指標

我們使用訓練期間記錄的history來獲取準確率指標的圖表。以下程式碼將繪製每個epoch的準確率。我們選擇訓練資料準確率(“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')

輸出圖表如下所示:

Plotting Accuracy Metrics

正如您在圖中看到的,準確率在前兩個epoch迅速增加,表明網路學習速度很快。之後,曲線趨於平緩,表明不需要太多epoch來進一步訓練模型。通常,如果訓練資料準確率(“acc”)持續提高,而驗證資料準確率(“val_acc”)變差,則會遇到過擬合問題。這表明模型開始記憶資料。

我們還將繪製損失指標來檢查模型的效能。

繪製損失指標

同樣,我們繪製訓練資料(“loss”)和測試資料(“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')

此程式碼的輸出如下所示:

Plotting Loss Metrics

正如您在圖中看到的,訓練集的損失在前兩個epoch迅速下降。對於測試集,損失的下降速度不如訓練集,但在多個epoch中幾乎保持不變。這意味著我們的模型能夠很好地泛化到未見資料。

現在,我們將使用訓練好的模型來預測測試資料中的數字。

廣告