您可以提前停止训练,但 Keras 不会让您在 epoch 结束后终止训练。
示例:
from keras import callbacks
early_stopping = callbacks.EarlyStopping(monitor='val_loss', min_delta=0, patience=5, verbose=1, mode='auto')
model.fit(X_train,
y_train,
epochs=10,
batch_size=64,
validation_data=(X_val, y_val),
callbacks=early_stopping)
您可以尝试的另一种方法是降低学习率。
early_stopping = callbacks.EarlyStopping(monitor='val_loss', min_delta=0, patience=5, verbose=1, mode='auto')
reduce_lr = callbacks.ReduceLROnPlateau(monitor='val_loss', factor=0.2, patience=8, min_lr=0.0001, verbose=1)
model.fit(X_train,
y_train,
epochs=10,
batch_size=64,
validation_data=(X_val, y_val),
callbacks=[early_stopping, reduce_lr])
确保 patience 设置为不同的值,以便模型在 5 个 epoch 后首先调整学习率,而 val_loss 没有改善,然后在 8 个 epoch 后完全停止训练。
希望这会有所帮助。