tf.contrib.estimator.make_early_stopping_hook

tf.contrib.estimator.make_early_stopping_hook(
    estimator,
    should_stop_fn,
    run_every_secs=60,
    run_every_steps=None
)

Defined in tensorflow/contrib/estimator/python/estimator/early_stopping.py.

Creates early-stopping hook.

Returns a SessionRunHook that stops training when should_stop_fn returns True.

Usage example:

estimator = ...
hook = early_stopping.make_early_stopping_hook(
    estimator, should_stop_fn=make_stop_fn(...))
train_spec = tf.estimator.TrainSpec(..., hooks=[hook])
tf.estimator.train_and_evaluate(estimator, train_spec, ...)

Caveat: Current implementation supports early-stopping both training and evaluation in local mode. In distributed mode, training can be stopped but evaluation (where it's a separate job) will indefinitely wait for new model checkpoints to evaluate, so you will need other means to detect and stop it. Early-stopping evaluation in distributed mode requires changes in train_and_evaluate API and will be addressed in a future revision.

Args:

  • estimator: A tf.estimator.Estimator instance.
  • should_stop_fn: callable, function that takes no arguments and returns a bool. If the function returns True, stopping will be initiated by the chief.
  • run_every_secs: If specified, calls should_stop_fn at an interval of run_every_secs seconds. Defaults to 60 seconds. Either this or run_every_steps must be set.
  • run_every_steps: If specified, calls should_stop_fn every run_every_steps steps. Either this or run_every_secs must be set.

Returns:

A SessionRunHook that periodically executes should_stop_fn and initiates early stopping if the function returns True.

Raises:

  • TypeError: If estimator is not of type tf.estimator.Estimator.
  • ValueError: If both run_every_secs and run_every_steps are set.