class_docstr: Base class of a learning rate scheduler.
  
  A scheduler returns a new learning rate based on the number of updates that have
  been performed.
  
  Parameters
  ----------
  base_lr : float, optional
      The initial learning rate.
  warmup_steps: int
      number of warmup steps used before this scheduler starts decay
  warmup_begin_lr: float
      if using warmup, the learning rate from which it starts warming up
  warmup_mode: string
      warmup can be done in two modes.
      'linear' mode gradually increases lr with each step in equal increments
      'constant' mode keeps lr at warmup_begin_lr for warmup_steps
docstr: Return a new learning rate.
  
  The ``num_update`` is the upper bound of the number of updates applied to
  every weight.
  
  Assume the optimizer has updated *i*-th weight by *k_i* times, namely
  ``optimizer.update(i, weight_i)`` is called by *k_i* times. Then::
  
      num_update = max([k_i for all i])
  
  Parameters
  ----------
  num_update: int
      the maximal number of updates applied to a weight.
docstr_tok: ["Return","a","new","learning","rate",".","The","``","num_update","``","is","the","upper","bound","of","the","number","of","updates","applied","to","every","weight",".","Assume","the","optimizer","has","updated","*","i","*","-th","weight","by","*","k_i","*","times",",","namely","``","optimizer.update","(","i",",","weight_i",")","``","is","called","by","*","k_i","*","times",".","Then",":",":","num_update","=","max","(","[","k_i","for","all","i","]",")","Parameters","--","--","--","--","--","num_update",":","int","the","maximal","number","of","updates","applied","to","a","weight","."]
code: def __call__(self, num_update):
      """Return a new learning rate.
  
      The ``num_update`` is the upper bound of the number of updates applied to
      every weight.
  
      Assume the optimizer has updated *i*-th weight by *k_i* times, namely
      ``optimizer.update(i, weight_i)`` is called by *k_i* times. Then::
  
          num_update = max([k_i for all i])
  
      Parameters
      ----------
      num_update: int
          the maximal number of updates applied to a weight.
      """
      raise NotImplementedError("must override this")
  
imports: import logging
  from math import cos, pi
label_desc: Use image node_id 3 for calling the LRScheduler obj's underlying member method code with example usage: obj.__call__(num_update) without return types