@@ 36-45 (lines=10) @@ | ||
33 | self._iter = 0 |
|
34 | self._annealed_iter = 0 |
|
35 | ||
36 | def invoke(self): |
|
37 | """ |
|
38 | Run it, return whether to end training. |
|
39 | """ |
|
40 | self._iter += 1 |
|
41 | if self._iter - max(self._trainer.best_iter, self._annealed_iter) >= self._patience: |
|
42 | if self._annealed_times >= self._anneal_times: |
|
43 | logging.info("ending") |
|
44 | return True |
|
45 | else: |
|
46 | self._trainer.set_params(*self._trainer.best_params) |
|
47 | self._learning_rate.set_value(self._learning_rate.get_value() * 0.5) |
|
48 | self._annealed_times += 1 |
|
@@ 74-80 (lines=7) @@ | ||
71 | self._rollback = rollback |
|
72 | ||
73 | ||
74 | def bind(self, trainer): |
|
75 | super(ScheduledLearningRateAnnealer, self).bind(trainer) |
|
76 | self._learning_rate = self._trainer.config.learning_rate |
|
77 | self._iter = 0 |
|
78 | self._last_halving_iter = 0 |
|
79 | ||
80 | def invoke(self): |
|
81 | self._iter += 1 |
|
82 | if self._iter >= self.iter_start_halving and self._iter > self._last_halving_iter + self._halving_interval: |
|
83 | if self._rollback: |