Reputation: 31
I am conditioning earlystop in val_loss like below:
earlystop = EarlyStopping(monitor='val_loss',
min_delta=0.0001,
patience=3,
verbose=1,
mode='auto')
It stops correctly after no improvement in 3 epoch but i dont see where it gets loss as 1.73011 from ? Can anyone help ? Also notice it starts this even after the 1st epoch , shouldn't it wait at least two epochs to compare and then declare 'no improvement(reduction)' in loss?
Upvotes: 1
Views: 480
Reputation: 1
Seems it is using some default baseline value or calculating a baseline (somehow!) when you are not explicitly supplying one.
Explicitly make the baseline = None and try.
Upvotes: 0
Reputation: 11198
This is based on how you've set your parameters, you can simply increase the patience
so that the callback observes results for more epochs before stopping the training process.
These are what each parameter means:
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.
ref: https://keras.io/api/callbacks/early_stopping/
Upvotes: 0