Shortcuts

EarlyStopping#

class ignite.handlers.early_stopping.EarlyStopping(patience, score_function, trainer, min_delta=0.0, cumulative_delta=False, min_delta_mode='abs', mode='max')[source]#

EarlyStopping handler can be used to stop the training if no improvement after a given number of events.

Parameters
  • patience (int) – Number of events to wait if no improvement and then stop the training.

  • score_function (Callable) – It should be a function taking a single argument, an Engine object, and return a score float. An improvement is considered if the score is higher (for mode='max') or lower (for mode='min').

  • trainer (Engine) – Trainer engine to stop the run if no improvement.

  • min_delta (float) – A minimum change in the score to qualify as an improvement. For mode='max', it’s a minimum increase; for mode='min', it’s a minimum decrease. An improvement is only considered if the change exceeds the threshold determined by min_delta and min_delta_mode.

  • cumulative_delta (bool) – If True, min_delta defines the change since the last patience reset, otherwise, it defines the change after the last event. Default value is False.

  • min_delta_mode (Literal['abs', 'rel']) –

    Determines whether min_delta is an absolute change or a relative change.

    • In ‘abs’ mode:

      • For mode='max': improvement if score > best_score + min_delta

      • For mode='min': improvement if score < best_score - min_delta

    • In ‘rel’ mode:

      • For mode='max': improvement if score > best_score * (1 + min_delta)

      • For mode='min': improvement if score < best_score * (1 - min_delta)

    Possible values are “abs” and “rel”. Default value is “abs”.

  • mode (Literal['min', 'max']) – Whether to maximize (‘max’) or minimize (‘min’) the score. Default is ‘max’.

Examples

from ignite.engine import Engine, Events
from ignite.handlers import EarlyStopping

def score_function(engine):
    val_loss = engine.state.metrics['nll']
    return -val_loss

handler = EarlyStopping(patience=10, score_function=score_function, trainer=trainer)
# Note: the handler is attached to an *Evaluator* (runs one epoch on validation dataset).
evaluator.add_event_handler(Events.COMPLETED, handler)

Changed in version 0.6.0: Added mode parameter to support minimization in addition to maximization. Added min_delta_mode parameter to support both absolute and relative improvements.

Methods

attach

Attaches the early stopping handler to an engine and registers its reset callback.

load_state_dict

Method replace internal state of the class with provided state dict data.

reset

Reset the early stopping state, including the counter and best score.

state_dict

Method returns state dict with counter and best_score.

attach(engine, event=Events.COMPLETED, reset_engine=None, reset_event=Events.STARTED, *args, **kwargs)[source]#

Attaches the early stopping handler to an engine and registers its reset callback.

This method will: 1. Add the early stopping evaluation logic (self) to engine on the given event. 2. Add the reset method to reset_engine (or engine if not provided) on the given reset_event.

Parameters
  • engine (Engine) – The engine to attach the early stopping evaluation to (typically an evaluator).

  • event (Any) – The event on engine that triggers the early stopping check. Default is COMPLETED.

  • reset_engine (Optional[Engine]) – The engine to attach the reset callback to (typically the trainer). If None, defaults to engine.

  • reset_event (Any) – The event on reset_engine that triggers the handler state reset. Default is STARTED.

  • args (Any) –

  • kwargs (Any) –

Return type

None

New in version 0.6.0.

load_state_dict(state_dict)[source]#

Method replace internal state of the class with provided state dict data.

Parameters

state_dict (Mapping) – a dict with “counter” and “best_score” keys/values.

Return type

None

reset()[source]#

Reset the early stopping state, including the counter and best score.

New in version 0.6.0.

Return type

None

state_dict()[source]#

Method returns state dict with counter and best_score. Can be used to save internal state of the class.

Return type

OrderedDict[str, float]