class_docstr: All training progress is divided in `cycles` (default=1.) parts of equal length.
  Every part follows a schedule with the first `warmup` fraction of the training steps linearly increasing from 0. to 1.,
  followed by a learning rate decreasing from 1. to 0. following a cosine curve.
code: def __init__(self, warmup=0.002, t_total=-1, cycles=1.0, **kw):
      assert warmup * cycles < 1.0
      warmup = warmup * cycles if warmup >= 0 else warmup
      super(WarmupCosineWithWarmupRestartsSchedule, self).__init__(
          warmup=warmup, t_total=t_total, cycles=cycles, **kw
      )
  
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 WarmupCosineWithWarmupRestartsSchedule object from inherited base classes: WarmupCosineWithHardRestartsSchedule with example: obj = WarmupCosineWithWarmupRestartsSchedule(warmup, t_total, cycles)