class_docstr: Parent of all LRSchedules here. 
docstr: :param warmup:  what fraction of t_total steps will be used for linear warmup
  :param t_total: how many training steps (updates) are planned
  :param kw:
code: def __init__(self, warmup=0.002, t_total=-1, **kw):
      """
      :param warmup:  what fraction of t_total steps will be used for linear warmup
      :param t_total: how many training steps (updates) are planned
      :param kw:
      """
      super(_LRSchedule, self).__init__(**kw)
      if t_total < 0:
          logger.warning(
              "t_total value of {} results in schedule not being applied".format(
                  t_total
              )
          )
      if not 0.0 <= warmup < 1.0 and not warmup == -1:
          raise ValueError(
              "Invalid warmup: {} - should be in [0.0, 1.0[ or -1".format(
                  warmup
              )
          )
      warmup = max(warmup, 0.0)
      self.warmup, self.t_total = float(warmup), float(t_total)
      self.warned_for_t_total_at_progress = -1
  
imports: import math
  import torch
  from torch.optim import Optimizer
  from torch.optim.optimizer import required
  from torch.nn.utils import clip_grad_norm_
  import logging
  import abc
  import sys
label_desc: Use image node_id 1 to create a new _LRSchedule object from inherited base classes: ABC with example: obj = _LRSchedule(warmup, t_total)