(self)
| 171 | super().__init__(optimizer, last_iter) |
| 172 | |
| 173 | def get_lr(self): |
| 174 | # logger.debug(f"step count: {self._step_count} | warmup iters: {self.warmup_iters} | max iters: {self.max_iters}") |
| 175 | if self._step_count <= self.warmup_iters: |
| 176 | return [ |
| 177 | self.initial_lr + (base_lr - self.initial_lr) * self._step_count / self.warmup_iters |
| 178 | for base_lr in self.base_lrs] |
| 179 | elif not self.decay: |
| 180 | return [base_lr for base_lr in self.base_lrs] |
| 181 | elif self._step_count >= self.max_iters: |
| 182 | return [min(self.min_lr, base_lr) for base_lr in self.base_lrs] |
| 183 | else: |
| 184 | cos_iter = self._step_count - self.warmup_iters |
| 185 | cos_max_iter = self.max_iters - self.warmup_iters |
| 186 | cos_theta = cos_iter / cos_max_iter * math.pi |
| 187 | cos_lr = [base_lr * (1. + math.cos(cos_theta)) / 2 for base_lr in self.base_lrs] |
| 188 | return [max(self.min_lr, lr) for lr in cos_lr] |
| 189 | |
| 190 | def step(self, epoch=None): |
| 191 | super().step() |
nothing calls this directly
no outgoing calls
no test coverage detected