tf.estimator.experimental.make_early_stopping_hook(
estimator,
should_stop_fn,
run_every_secs=60,
run_every_steps=None
)
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
: Atf.estimator.Estimator
instance.should_stop_fn
:callable
, function that takes no arguments and returns abool
. If the function returnsTrue
, stopping will be initiated by the chief.run_every_secs
: If specified, callsshould_stop_fn
at an interval ofrun_every_secs
seconds. Defaults to 60 seconds. Either this orrun_every_steps
must be set.run_every_steps
: If specified, callsshould_stop_fn
everyrun_every_steps
steps. Either this orrun_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
: Ifestimator
is not of typetf.estimator.Estimator
.ValueError
: If bothrun_every_secs
andrun_every_steps
are set.