class_docstr: Starts with a linear warmup lr schedule until it reaches N epochs then applies
  the specific scheduler (For example: ReduceLROnPlateau).
  
  Args:
      optimizer (:class:`torch.optim.Optimizer`): Wrapped optimizer.
      warmup_epochs (int): Number of epochs to linearly warmup lr until starting applying the scheduler.
      after_scheduler (:class:`torch.optim.lr_scheduler`): After target_epoch, use this scheduler.
      last_epoch (int, optional): The index of last epoch, defaults to -1. When last_epoch=-1,
          the schedule is started from the beginning or When last_epoch=-1, sets initial lr as lr.
code: def __init__(
      self, optimizer, warmup_epochs, after_scheduler, last_epoch=-1
  ):
      self.warmup_epochs = int(warmup_epochs)
      self.after_scheduler = after_scheduler
      self.finished = False
      super().__init__(optimizer, last_epoch)
  
imports: import torch
  from packaging.version import Version
label_desc: Use image node_id 1 to create a new WarmupScheduler object from inherited base classes: _LRScheduler with example: obj = WarmupScheduler(optimizer, warmup_epochs, after_scheduler, last_epoch)