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 step(self, epoch=None, metrics=None):
      if not isinstance(self.after_scheduler, ReduceLROnPlateau):
          if self.finished and self.after_scheduler:
              if epoch is None:
                  self.after_scheduler.step(None)
              else:
                  self.after_scheduler.step(epoch - self.total_epoch)
              self._last_lr = self.after_scheduler.get_last_lr()
          else:
              return super(GradualWarmupScheduler, self).step(epoch)
      else:
          self.step_ReduceLROnPlateau(metrics, epoch)
  
imports: import math
  import warnings
  import numpy
  from torch import nn
  from torch.optim.optimizer import Optimizer
  from torch.optim.lr_scheduler import _LRScheduler, LambdaLR, ExponentialLR, CyclicLR, MultiStepLR, ReduceLROnPlateau, CosineAnnealingLR, CosineAnnealingWarmRestarts
label_desc: Use image node_id 4 for calling the GradualWarmupScheduler obj's underlying member method code with example usage: obj.step(epoch, metrics) and returns: super