def METHOD_NAME(self):
    # https://openreview.net/pdf?id=BJYwwY9ll pg. 4
    if self.warmup_iter > 0 and self.num_iters <= self.warmup_iter:
        return float(self.start_lr) * self.num_iters / self.warmup_iter
    else:
        if self.decay_style == self.DECAY_STYLES[0]:
            decay_step_ratio = (self.num_iters -
                                self.warmup_iter) / self.end_iter
            return self.start_lr - self.start_lr * (
                1 - 1 / self.decay_ratio) * decay_step_ratio
        elif self.decay_style == self.DECAY_STYLES[1]:
            decay_step_ratio = min(
                1.0, (self.num_iters - self.warmup_iter) / self.end_iter)
            return self.start_lr / self.decay_ratio * (
                (math.cos(math.pi * decay_step_ratio) + 1) *
                (self.decay_ratio - 1) / 2 + 1)
        elif self.decay_style == self.DECAY_STYLES[2]:
            # TODO: implement exponential decay
            return self.start_lr
        else:
            return self.start_lr