class_docstr: Linearly increases learning rate from 0 to 1 over `warmup` fraction of training steps.
  Decreases learning rate from 1. to 0. over remaining `1 - warmup` steps following a cosine curve.
  If `cycles` (default=0.5) is different from default, learning rate follows cosine function after warmup.
code: def get_lr_(self, progress):
      if progress < self.warmup:
          return progress / self.warmup
      else:
          progress = (progress - self.warmup) / (
              1 - self.warmup
          )  # progress after warmup
          return 0.5 * (
              1.0 + math.cos(math.pi * self.cycles * 2 * progress)
          )
  
imports: import math
  import torch
  from torch.optim.optimizer import Optimizer
  from torch.nn.utils import clip_grad_norm_
  import logging
  import abc
  import sys
label_desc: Use image node_id 2 for calling the WarmupCosineSchedule obj's underlying member method code with example usage: obj.get_lr_(progress) and returns: unknown, unknown