class_docstr: ```
  Applies a warmup schedule on a given learning rate decay schedule.
  Args:
      initial_learning_rate (:obj:`float`):
          The initial learning rate for the schedule after the warmup (so this will be the learning rate at the end
          of the warmup).
      decay_schedule_fn (:obj:`Callable`):
          The schedule function to apply after the warmup for the rest of training.
      warmup_steps (:obj:`int`):
          The number of steps for the warmup part of training.
      power (:obj:`float`, `optional`, defaults to 1):
          The power to use for the polynomial warmup (defaults is a linear warmup).
      name (:obj:`str`, `optional`):
          Optional name prefix for the returned tensors during the schedule.
  ```
code: def get_config(self):
      return {
          "initial_learning_rate": self.initial_learning_rate,
          "decay_schedule_fn": self.decay_schedule_fn,
          "warmup_steps": self.warmup_steps,
          "power": self.power,
          "name": self.name,
      }
  
imports: import re
  from typing import Callable, List, Optional, Union
  import tensorflow
  from packaging import version
label_desc: Use image node_id 3 for calling the WarmUp obj's underlying member method code with example usage: obj.get_config() and returns: dict