clinicadl.optim.lr_schedulers.config.OneCycleLRConfig

clinicadl.optim.lr_schedulers.config.OneCycleLRConfig[source]

Config class for torch.optim.lr_scheduler.OneCycleLR.

Some parameters accept a dictionary in case you defined several parameter groups in your optimizer configuration class. Use the same group names as the ones passed to the optimizer to specify different values for each group.

Examples

from clinicadl.networks.nn import CNN

network = CNN(
    in_shape=(1, 16, 16, 16),
    num_outputs=1,
    conv_args={"channels": [2, 4]},
)
>>> network
CNN(
    (convolutions): ConvEncoder(
        (layer0): Convolution(
            (conv): Conv3d(1, 2, kernel_size=(3, 3, 3), stride=(1, 1, 1))
        )
    )
    (mlp): MLP(
        (flatten): Flatten(start_dim=1, end_dim=-1)
        (output): Sequential(
            (linear): Linear(in_features=5488, out_features=1, bias=True)
        )
    )
)
from clinicadl.optim.optimizers.config import AdamConfig
from clinicadl.optim.lr_schedulers.config import OneCycleLRConfig

optimizer_config = AdamConfig(
    rho={"convolutions.layer0": 0.99, "ELSE": 0.9}
)
lr_scheduler_config = OneCycleLRConfig(
    max_lr={"convolutions.layer0": 1e-2, "ELSE": 1e-3}
)

The optimizer is not passed here.

parameter max_lr: Union[PositiveFloat, Sequence[PositiveFloat], Dict[str, PositiveFloat]] [Required]
parameter total_steps: Optional[PositiveInt] = None
parameter epochs: Optional[PositiveInt] = None
parameter steps_per_epoch: Optional[PositiveInt] = None
parameter pct_start: NonNegativeFloat = 0.3
parameter anneal_strategy: AnnealingStrategy = 'cos'
parameter cycle_momentum: bool = True
parameter base_momentum: Union[NonNegativeFloat, Sequence[NonNegativeFloat], Dict[str, NonNegativeFloat]] = 0.85
parameter max_momentum: Union[NonNegativeFloat, Sequence[NonNegativeFloat], Dict[str, NonNegativeFloat]] = 0.95
parameter div_factor: PositiveFloat = 25.0
parameter final_div_factor: PositiveFloat = 10000.0
parameter three_phase: bool = False
parameter last_epoch: int = -1