class_docstr: Cosine-sawtooth-shaped tail that simulates warm restarts.
  
  Creates a cyclic learning rate curve; each cycle is half of a cosine, falling
  from maximum value to minimum value. For motivation and further details, see
  Loshchilov & Hutter (2017) [https://arxiv.org/abs/1608.03983].
docstr: Returns the learning rate for the given step number, when in the tail.
  
  Args:
    step_number: Absolute step number from the start of training.
    tail_start: Step number at which the tail of the curve starts.
    body_value: Value relative to which the tail should be computed.
docstr_tok: ["Returns","the","learning","rate","for","the","given","step","number",",","when","in","the","tail",".","Args",":","step_number",":","Absolute","step","number","from","the","start","of","training",".","tail_start",":","Step","number","at","which","the","tail","of","the","curve","starts",".","body_value",":","Value","relative","to","which","the","tail","should","be","computed","."]
code: def __call__(self, step_number, tail_start, body_value):
      """Returns the learning rate for the given step number, when in the tail.
  
      Args:
        step_number: Absolute step number from the start of training.
        tail_start: Step number at which the tail of the curve starts.
        body_value: Value relative to which the tail should be computed.
      """
      max_value = body_value
      min_value = self._min_value
      position_in_cycle = (
          (step_number - tail_start) / self._steps_per_cycle
      ) % 1.0
      theta = math.pi * position_in_cycle
      return min_value + (max_value - min_value) * 0.5 * (
          1 + math.cos(theta)
      )
  
file_path: trax/trax/supervised/lr_schedules.py
imports: import math
  import gin
  from trax.fastmath import numpy
label_desc: Use image node_id 2 for calling the _CosineSawtoothTail obj's underlying member method code with example usage: obj.__call__(step_number, tail_start, body_value) and returns: unknown