def __init__(self, dmodel, step_size, max_lr, warmup_steps=4000):
        """Applies triangular cyclic to the square root decay learning rate.
        Args:
        d_model: Model dimension
        warmup_steps: Warm up steps where the LR increases linearly.
        max_lr: The maximum LR.
        step_size: The size of the cyclic triangular half cycle.
        """
        super().__init__()
        self.dmodel = tf.convert_to_tensor(dmodel, tf.float32)
        self.warmup_steps = tf.convert_to_tensor(warmup_steps, tf.float32)
        self.max_lr = eval(max_lr) if isinstance(max_lr, str) else max_lr
        self.max_lr = tf.convert_to_tensor(self.max_lr, tf.float32)
        self.step_size = tf.convert_to_tensor(step_size, tf.float32)
Applies triangular cyclic to the square root decay learning rate.
        Args:
        d_model: Model dimension
        warmup_steps: Warm up steps where the LR increases linearly.
        max_lr: The maximum LR.
        step_size: The size of the cyclic triangular half cycle.
        
tensorflow_asr/optimizers/schedules.py