Stoppers¶
Early stoppers.
The following code will create a scenario in which training will stop
(quite) early when training pykeen.models.TransE
on the
pykeen.datasets.Nations
dataset.
>>> from pykeen.pipeline import pipeline
>>> pipeline_result = pipeline(
... dataset='nations',
... model='transe',
... model_kwargs=dict(embedding_dim=20, scoring_fct_norm=1),
... optimizer='SGD',
... optimizer_kwargs=dict(lr=0.01),
... loss='marginranking',
... loss_kwargs=dict(margin=1),
... training_loop='slcwa',
... training_kwargs=dict(num_epochs=100, batch_size=128),
... negative_sampler='basic',
... negative_sampler_kwargs=dict(num_negs_per_pos=1),
... evaluator_kwargs=dict(filtered=True),
... evaluation_kwargs=dict(batch_size=128),
... stopper='early',
... stopper_kwargs=dict(frequency=5, patience=2, delta=0.002),
... )
-
class
pykeen.stoppers.
Stopper
(*args, **kwargs)[source]¶ A harness for stopping training.
-
class
pykeen.stoppers.
EarlyStopper
(model, evaluator, evaluation_triples_factory, evaluation_batch_size=None, evaluation_slice_size=None, frequency=10, patience=2, metric='hits_at_k', delta=0.005, results=<factory>, number_evaluations=0, larger_is_better=True, improvement_criterion=None, result_tracker=None, continue_callbacks=<factory>, stopped_callbacks=<factory>, stopped=False)[source]¶ A harness for early stopping.
-
buffer
: numpy.ndarray¶ A ring buffer to store the recent results
-
continue_callbacks
: List[Callable[[pykeen.stoppers.stopper.Stopper, Union[int, float]], None]]¶ Callbacks when training gets continued
-
evaluation_triples_factory
: Optional[pykeen.triples.triples_factory.TriplesFactory]¶ The triples to use for evaluation
-
evaluator
: pykeen.evaluation.evaluator.Evaluator¶ The evaluator
-
improvement_criterion
: Callable[[numpy.ndarray, float, float], bool] = None¶ The criterion. Set in the constructor based on larger_is_better
-
model
: pykeen.models.base.Model¶ The model
-
patience
: int = 2¶ The number of iterations (one iteration can correspond to various epochs) with no improvement after which training will be stopped.
-
result_tracker
: Optional[pykeen.utils.ResultTracker] = None¶ The result tracker
-
should_evaluate
(epoch)[source]¶ Decide if evaluation should be done based on the current epoch and the internal frequency.
- Return type
-