[docs]@dataclasses.dataclassclassSchedulerConfig:""" Configuration for a scheduler to use during training. Parameters: type: Name of scheduler class from torch.optim.lr_scheduler, no scheduler is used by default. kwargs: Keyword arguments to pass to the scheduler constructor. """type:str|None=Nonekwargs:Mapping[str,Any]=dataclasses.field(default_factory=dict)
[docs]defbuild(self,optimizer,max_epochs)->torch.optim.lr_scheduler._LRScheduler|None:""" Build the scheduler. """ifself.typeisNone:returnNonebuild_kwargs={**self.kwargs}# work-around so we don't need to specify T_max# in the yaml file for this schedulerifself.type=="CosineAnnealingLR"and"T_max"notinself.kwargs:build_kwargs["T_max"]=max_epochsscheduler_class=getattr(torch.optim.lr_scheduler,self.type)returnscheduler_class(optimizer=optimizer,**build_kwargs)