pytorch_lr_schedulers
allennlp.training.learning_rate_schedulers.pytorch_lr_schedulers
Wrappers for PyTorch's Learning Rate Schedulers so that they work with AllenNLP
StepLearningRateScheduler¶
@LearningRateScheduler.register("step")
class StepLearningRateScheduler(_PyTorchLearningRateSchedulerWrapper):
| def __init__(
| self,
| optimizer: Optimizer,
| step_size: int,
| gamma: float = 0.1,
| last_epoch: int = -1
| ) -> None
Wrapper for PyTorch's StepLR
.
Registered as a LearningRateScheduler
with name "step". The "optimizer"
argument does not get an entry in a configuration file for the object.
Parameters¶
- optimizer :
torch.optim.Optimizer
This argument does not get an entry in a configuration file for the object. - step_size :
int
Period of learning rate decay. - gamma :
float
, optional (default =0.1
)
Multiplicative factor of learning rate decay. - last_epoch :
int
, optional (default =-1
)
The index of the last epoch. This is used when restarting.
Example¶
Config for using the StepLearningRateScheduler
Learning Rate Scheduler
with step_size
of 100
and gamma
set 0.2
.
{
...
"trainer":{
...
"learning_rate_scheduler": {
"type": "step",
"step_size": 100,
"gamma": 0.2
},
...
}
}
optimizer
key to the Learning rate scheduler.
MultiStepLearningRateScheduler¶
@LearningRateScheduler.register("multi_step")
class MultiStepLearningRateScheduler(_PyTorchLearningRateSchedulerWrapper):
| def __init__(
| self,
| optimizer: Optimizer,
| milestones: List[int],
| gamma: float = 0.1,
| last_epoch: int = -1
| ) -> None
Wrapper for PyTorch's MultiStepLR
.
Registered as a LearningRateScheduler
with name "multi_step". The "optimizer" argument does
not get an entry in a configuration file for the object.
Example¶
Config for using the MultiStepLearningRateScheduler
Learning Rate
Scheduler with milestones
of [10,20,40]
and gamma
set 0.2
.
{
...
"trainer":{
...
"learning_rate_scheduler": {
"type": "multi_step",
"milestones": [10,20,40],
"gamma": 0.2
},
...
}
}
optimizer
key to the Learning rate scheduler.
ExponentialLearningRateScheduler¶
@LearningRateScheduler.register("exponential")
class ExponentialLearningRateScheduler(_PyTorchLearningRateSchedulerWrapper):
| def __init__(
| self,
| optimizer: Optimizer,
| gamma: float = 0.1,
| last_epoch: int = -1
| ) -> None
Wrapper for PyTorch's ExponentialLR
.
Registered as a LearningRateScheduler
with name "exponential". The "optimizer" argument does
not get an entry in a configuration file for the object.
Example¶
Config for using the ExponentialLearningRateScheduler
Learning Rate
Scheduler with gamma
set 0.2
.
{
...
"trainer":{
...
"learning_rate_scheduler": {
"type": "exponential",
"gamma": 0.2
},
...
}
}
optimizer
key to the Learning rate scheduler.
ReduceOnPlateauLearningRateScheduler¶
@LearningRateScheduler.register("reduce_on_plateau")
class ReduceOnPlateauLearningRateScheduler(_PyTorchLearningRateSchedulerWithMetricsWrapper):
| def __init__(
| self,
| optimizer: Optimizer,
| mode: str = "min",
| factor: float = 0.1,
| patience: int = 10,
| verbose: bool = False,
| threshold_mode: str = "rel",
| threshold: float = 1e-4,
| cooldown: int = 0,
| min_lr: Union[float, List[float]] = 0,
| eps: float = 1e-8
| ) -> None
Wrapper for PyTorch's ReduceLROnPlateau
.
Registered as a LearningRateScheduler
with name "reduce_on_plateau". The
"optimizer" argument does not get an entry in a configuration file for the
object.
# Example
Config for using the ReduceOnPlateauLearningRateScheduler
Learning Rate
Scheduler with the following init
arguments:
mode="max"
factor=0.2
patience=5
threshold=5e-3
threshold_mode="abs"
cooldown=2
min_lr=1e-12
eps=1e-10
{
...
"trainer":{
...
"learning_rate_scheduler": {
"type": "reduce_on_plateau",
"mode": "max",
"factor": 0.2,
"patience": 5,
"threshold": 5e-3,
"threshold_mode": "abs",
"cooldown": 2,
"min_lr": 1e-12,
"eps": 1e-10
},
...
}
}
optimizer
key to the Learning rate scheduler.