Missed TensorFlow Dev Summit? Check out the video playlist. Watch recordings

tf.keras.callbacks.EarlyStopping

TensorFlow 1 version View source on GitHub

Stop training when a monitored metric has stopped improving.

Inherits From: Callback

tf.keras.callbacks.EarlyStopping(
    monitor='val_loss', min_delta=0, patience=0, verbose=0, mode='auto',
    baseline=None, restore_best_weights=False
)

Used in the notebooks

Used in the guide Used in the tutorials

Assuming the goal of a training is to minimize the loss. With this, the metric to be monitored would be 'loss', and mode would be 'min'. A model.fit() training loop will check at end of every epoch whether the loss is no longer decreasing, considering the min_delta and patience if applicable. Once it's found no longer decreasing, model.stop_training is marked True and the training terminates.

The quantity to be monitored needs to be available in logs dict. To make it so, pass the loss or metrics at model.compile().

Example:

callback = tf.keras.callbacks.EarlyStopping(monitor='loss', patience=3) 
# This callback will stop the training when there is no improvement in 
# the validation loss for three consecutive epochs. 
model = tf.keras.models.Sequential([tf.keras.layers.Dense(10)]) 
model.compile(tf.keras.optimizers.SGD(), loss='mse') 
history = model.fit(np.arange(100).reshape(5, 20), np.zeros(5), 
                    epochs=10, batch_size=1, callbacks=[callback], 
                    verbose=0) 
len(history.history['loss'])  # Only 4 epochs are run. 
4 

Arguments:

  • monitor: Quantity to be monitored.
  • min_delta: Minimum change in the monitored quantity to qualify as an improvement, i.e. an absolute change of less than min_delta, will count as no improvement.
  • patience: Number of epochs with no improvement after which training will be stopped.
  • verbose: verbosity mode.
  • mode: One of {"auto", "min", "max"}. In min mode, training will stop when the quantity monitored has stopped decreasing; in max mode it will stop when the quantity monitored has stopped increasing; in auto mode, the direction is automatically inferred from the name of the monitored quantity.
  • baseline: Baseline value for the monitored quantity. Training will stop if the model doesn't show improvement over the baseline.
  • restore_best_weights: Whether to restore model weights from the epoch with the best value of the monitored quantity. If False, the model weights obtained at the last step of training are used.

Methods

get_monitor_value

View source

get_monitor_value(
    logs
)

set_model

View source

set_model(
    model
)

set_params

View source

set_params(
    params
)