class_docstr: Gradually warm-up(increasing) learning rate in optimizer.
  Proposed in 'Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour'.
  
  Args:
      optimizer (Optimizer): Wrapped optimizer.
      multiplier: target learning rate = base lr * multiplier if multiplier > 1.0. if multiplier = 1.0, lr starts from 0 and ends up with the base_lr.
      total_epoch: target learning rate is reached at total_epoch, gradually
      after_scheduler: after target_epoch, use this scheduler(eg. ReduceLROnPlateau)
class_docstr_tok: ["Gradually","warm-up","(","increasing",")","learning","rate","in","optimizer",".","Proposed","in","'Accurate",",","Large","Minibatch","SGD",":","Training","ImageNet","in","1","Hour","'",".","Args",":","optimizer","(","Optimizer",")",":","Wrapped","optimizer",".","multiplier",":","target","learning","rate","=","base","lr","*","multiplier","if","multiplier",">","1.0.","if","multiplier","=","1.0",",","lr","starts","from","0","and","ends","up","with","the","base_lr",".","total_epoch",":","target","learning","rate","is","reached","at","total_epoch",",","gradually","after_scheduler",":","after","target_epoch",",","use","this","scheduler","(","eg",".","ReduceLROnPlateau",")"]
code: def __init__(
      self, optimizer, multiplier, total_epoch, after_scheduler=None
  ):
      self.multiplier = multiplier
      if self.multiplier < 1.0:
          raise ValueError(
              "multiplier should be greater thant or equal to 1."
          )
      self.total_epoch = total_epoch
      self.after_scheduler = after_scheduler
      self.finished = False
      super(GradualWarmupScheduler, self).__init__(optimizer)
  
imports: from typing import List
  import torch
  from torch.optim.lr_scheduler import _LRScheduler
  from torch.optim.lr_scheduler import ReduceLROnPlateau
label_desc: Use image node_id 1 to create a new GradualWarmupScheduler object from inherited base classes: _LRScheduler with example: obj = GradualWarmupScheduler(optimizer, multiplier, total_epoch, after_scheduler)