Callbacks¶
Callbacks are essential to provide a uniform API for tasks like early stopping
etc.
The PyTorch learning rate schedulers are also implemented as callbacks.
Every callback should ber derived from AbstractCallback
and must
provide the methods at_epoch_begin
and at_epoch_end
.
AbstractCallback¶
-
class
AbstractCallback
(*args, **kwargs)[source]¶ Bases:
object
Implements abstract callback interface. All callbacks should be derived from this class
See also
AbstractNetworkTrainer
EarlyStopping¶
-
class
EarlyStopping
(monitor_key, min_delta=0, patience=0, mode='min')[source]¶ Bases:
delira.training.callbacks.abstract_callback.AbstractCallback
Implements Early Stopping as callback
See also
-
_is_better
(metric)[source]¶ Helper function to decide whether the current metric is better than the best metric so far
Parameters: metric – current metric value Returns: whether this metric is the new best metric or not Return type: bool
-
at_epoch_begin
(trainer, **kwargs)¶ Function which will be executed at begin of each epoch
Parameters: - trainer (
AbstractNetworkTrainer
) – - **kwargs – additional keyword arguments
Returns: modified trainer
Return type: AbstractNetworkTrainer
- trainer (
-
at_epoch_end
(trainer, **kwargs)[source]¶ Actual early stopping: Checks at end of each epoch if monitored metric is new best and if it hasn’t improved over self.patience epochs, the training will be stopped
Parameters: - trainer (
AbstractNetworkTrainer
) – the trainer whose arguments can be modified - **kwargs – additional keyword arguments
Returns: trainer with modified attributes
Return type: AbstractNetworkTrainer
- trainer (
-
DefaultPyTorchSchedulerCallback¶
-
class
DefaultPyTorchSchedulerCallback
(*args, **kwargs)[source]¶ Bases:
delira.training.callbacks.abstract_callback.AbstractCallback
Implements a Callback, which at_epoch_end function is suitable for most schedulers
-
at_epoch_begin
(trainer, **kwargs)¶ Function which will be executed at begin of each epoch
Parameters: - trainer (
AbstractNetworkTrainer
) – - **kwargs – additional keyword arguments
Returns: modified trainer
Return type: AbstractNetworkTrainer
- trainer (
-
CosineAnnealingLRCallback¶
-
class
CosineAnnealingLRCallback
(optimizer, T_max, eta_min=0, last_epoch=-1)[source]¶ Bases:
delira.training.callbacks.pytorch_schedulers.DefaultPyTorchSchedulerCallback
Wraps PyTorch’s CosineAnnealingLR Scheduler as callback
-
at_epoch_begin
(trainer, **kwargs)¶ Function which will be executed at begin of each epoch
Parameters: - trainer (
AbstractNetworkTrainer
) – - **kwargs – additional keyword arguments
Returns: modified trainer
Return type: AbstractNetworkTrainer
- trainer (
-
at_epoch_end
(trainer, **kwargs)¶ Executes a single scheduling step
Parameters: - trainer (
PyTorchNetworkTrainer
) – the trainer class, which can be changed - **kwargs – additional keyword arguments
Returns: modified trainer
Return type: PyTorchNetworkTrainer
- trainer (
-
ExponentialLRCallback¶
-
class
ExponentialLRCallback
(optimizer, gamma, last_epoch=-1)[source]¶ Bases:
delira.training.callbacks.pytorch_schedulers.DefaultPyTorchSchedulerCallback
Wraps PyTorch’s ExponentialLR Scheduler as callback
-
at_epoch_begin
(trainer, **kwargs)¶ Function which will be executed at begin of each epoch
Parameters: - trainer (
AbstractNetworkTrainer
) – - **kwargs – additional keyword arguments
Returns: modified trainer
Return type: AbstractNetworkTrainer
- trainer (
-
at_epoch_end
(trainer, **kwargs)¶ Executes a single scheduling step
Parameters: - trainer (
PyTorchNetworkTrainer
) – the trainer class, which can be changed - **kwargs – additional keyword arguments
Returns: modified trainer
Return type: PyTorchNetworkTrainer
- trainer (
-
LambdaLRCallback¶
-
class
LambdaLRCallback
(optimizer, lr_lambda, last_epoch=-1)[source]¶ Bases:
delira.training.callbacks.pytorch_schedulers.DefaultPyTorchSchedulerCallback
Wraps PyTorch’s LambdaLR Scheduler as callback
-
at_epoch_begin
(trainer, **kwargs)¶ Function which will be executed at begin of each epoch
Parameters: - trainer (
AbstractNetworkTrainer
) – - **kwargs – additional keyword arguments
Returns: modified trainer
Return type: AbstractNetworkTrainer
- trainer (
-
at_epoch_end
(trainer, **kwargs)¶ Executes a single scheduling step
Parameters: - trainer (
PyTorchNetworkTrainer
) – the trainer class, which can be changed - **kwargs – additional keyword arguments
Returns: modified trainer
Return type: PyTorchNetworkTrainer
- trainer (
-
MultiStepLRCallback¶
-
class
MultiStepLRCallback
(optimizer, milestones, gamma=0.1, last_epoch=-1)[source]¶ Bases:
delira.training.callbacks.pytorch_schedulers.DefaultPyTorchSchedulerCallback
Wraps PyTorch’s MultiStepLR Scheduler as callback
-
at_epoch_begin
(trainer, **kwargs)¶ Function which will be executed at begin of each epoch
Parameters: - trainer (
AbstractNetworkTrainer
) – - **kwargs – additional keyword arguments
Returns: modified trainer
Return type: AbstractNetworkTrainer
- trainer (
-
at_epoch_end
(trainer, **kwargs)¶ Executes a single scheduling step
Parameters: - trainer (
PyTorchNetworkTrainer
) – the trainer class, which can be changed - **kwargs – additional keyword arguments
Returns: modified trainer
Return type: PyTorchNetworkTrainer
- trainer (
-
ReduceLROnPlateauCallback¶
-
class
ReduceLROnPlateauCallback
(optimizer, mode='min', factor=0.1, patience=10, verbose=False, threshold=0.0001, threshold_mode='rel', cooldown=0, min_lr=0, eps=1e-08)[source]¶ Bases:
delira.training.callbacks.pytorch_schedulers.DefaultPyTorchSchedulerCallback
Wraps PyTorch’s ReduceLROnPlateau Scheduler as Callback
-
at_epoch_begin
(trainer, **kwargs)¶ Function which will be executed at begin of each epoch
Parameters: - trainer (
AbstractNetworkTrainer
) – - **kwargs – additional keyword arguments
Returns: modified trainer
Return type: AbstractNetworkTrainer
- trainer (
-
StepLRCallback¶
-
class
StepLRCallback
(optimizer, step_size, gamma=0.1, last_epoch=-1)[source]¶ Bases:
delira.training.callbacks.pytorch_schedulers.DefaultPyTorchSchedulerCallback
Wraps PyTorch’s StepLR Scheduler as callback
-
at_epoch_begin
(trainer, **kwargs)¶ Function which will be executed at begin of each epoch
Parameters: - trainer (
AbstractNetworkTrainer
) – - **kwargs – additional keyword arguments
Returns: modified trainer
Return type: AbstractNetworkTrainer
- trainer (
-
at_epoch_end
(trainer, **kwargs)¶ Executes a single scheduling step
Parameters: - trainer (
PyTorchNetworkTrainer
) – the trainer class, which can be changed - **kwargs – additional keyword arguments
Returns: modified trainer
Return type: PyTorchNetworkTrainer
- trainer (
-
CosineAnnealingLRCallbackPyTorch¶
-
CosineAnnealingLRCallbackPyTorch
¶ alias of
delira.training.callbacks.pytorch_schedulers.CosineAnnealingLRCallback
ExponentialLRCallbackPyTorch¶
-
ExponentialLRCallbackPyTorch
¶ alias of
delira.training.callbacks.pytorch_schedulers.ExponentialLRCallback
LambdaLRCallbackPyTorch¶
-
LambdaLRCallbackPyTorch
¶ alias of
delira.training.callbacks.pytorch_schedulers.LambdaLRCallback
MultiStepLRCallbackPyTorch¶
-
MultiStepLRCallbackPyTorch
¶ alias of
delira.training.callbacks.pytorch_schedulers.MultiStepLRCallback
ReduceLROnPlateauCallbackPyTorch¶
-
ReduceLROnPlateauCallbackPyTorch
¶ alias of
delira.training.callbacks.pytorch_schedulers.ReduceLROnPlateauCallback
StepLRCallbackPyTorch¶
-
StepLRCallbackPyTorch
¶ alias of
delira.training.callbacks.pytorch_schedulers.StepLRCallback