def step(self, current_step: int=None):
    '\n        Updates the learning rate by taking a step.\n\n        :param current_step: Optionally specify what step to set the learning rate to.\n        If None, current_step = self.current_step + 1.\n        '
    if (current_step is not None):
        self.current_step = current_step
    else:
        self.current_step += 1
    for i in range(self.num_lrs):
        if (self.current_step <= self.warmup_steps[i]):
            self.lr[i] = (self.init_lr[i] + (self.current_step * self.linear_increment[i]))
        elif (self.current_step <= self.total_steps[i]):
            self.lr[i] = (self.max_lr[i] * (self.exponential_gamma[i] ** (self.current_step - self.warmup_steps[i])))
        else:
            self.lr[i] = self.final_lr[i]
        self.optimizer.param_groups[i]['lr'] = self.lr[i]
Updates the learning rate by taking a step.

:param current_step: Optionally specify what step to set the learning rate to.
If None, current_step = self.current_step + 1.
def step(self, current_step: int=None):
    '\n        Updates the learning rate by taking a step.\n\n        :param current_step: Optionally specify what step to set the learning rate to.\n        If None, current_step = self.current_step + 1.\n        '
    if (current_step is not None):
        self.current_step = current_step
    else:
        self.current_step += 1
    for i in range(self.num_lrs):
        if (self.current_step <= self.warmup_steps[i]):
            self.lr[i] = (self.init_lr[i] + (self.current_step * self.linear_increment[i]))
        elif (self.current_step <= self.total_steps[i]):
            self.lr[i] = (self.max_lr[i] * (self.exponential_gamma[i] ** (self.current_step - self.warmup_steps[i])))
        else:
            self.lr[i] = self.final_lr[i]
        self.optimizer.param_groups[i]['lr'] = self.lr[i]