class_docstr: Cosine learning rate decay.
  lr = eta_min + 0.5 * (learning_rate - eta_min) * (cos(epoch * (PI / epochs)) + 1)
  Args:
      args(Namespace): Arguments obtained from ArgumentParser.
      step_each_epoch(int): The number of steps in each epoch.
      last_epoch (int, optional):  The index of last epoch. Can be set to restart training.
          Default: -1, meaning initial learning rate.
code: def __call__(self):
      learning_rate = (
          paddle.optimizer.lr.CosineAnnealingDecay(
              learning_rate=self.learning_rate,
              T_max=self.T_max,
              eta_min=self.eta_min,
              last_epoch=self.last_epoch,
          )
          if self.T_max > 0
          else self.learning_rate
      )
      if self.warmup_steps > 0:
          learning_rate = paddle.optimizer.lr.LinearWarmup(
              learning_rate=learning_rate,
              warmup_steps=self.warmup_steps,
              start_lr=self.warmup_start_lr,
              end_lr=self.learning_rate,
              last_epoch=self.last_epoch,
          )
      return learning_rate
  
imports: import sys
  import logging
  import paddle
label_desc: Use image node_id 2 for calling the Cosine obj's underlying member method code with example usage: obj.__call__() and returns: learning_rate