我已经运行了一个具有 4 个 epoch 并使用early_stopping
.
early_stopping = EarlyStopping(monitor='val_loss', mode='min', patience=2, restore_best_weights=True)
history = model.fit(trainX, trainY, validation_data=(testX, testY), epochs=4, callbacks=[early_stopping])
Epoch 1/4
812/812 [==============================] - 68s 13ms/sample - loss: 0.6072 - acc: 0.717 - val_loss: 0.554 - val_acc: 0.7826
Epoch 2/4
812/812 [==============================] - 88s 11ms/sample - loss: 0.5650 - acc: 0.807 - val_loss: 0.527 - val_acc: 0.8157
Epoch 3/4
812/812 [==============================] - 88s 11ms/sample - loss: 0.5456 - acc: 0.830 - val_loss: 0.507 - val_acc: 0.8244
Epoch 4/4
812/812 [==============================] - 51s 9ms/sample - loss: 0.658 - acc: 0.833 - val_loss: 0.449 - val_acc: 0.8110
最高的val_ac
对应于第三个纪元,并且是0.8244
。但是,该accuracy_score
函数将返回最后一个 val_acc 值,即0.8110
.
yhat = model.predict_classes(testX)
accuracy = accuracy_score(testY, yhat)
可以在调用时指定 epochpredict_classes
以获得最高精度(在这种情况下,对应于第三个 epoch)?