| namespace neuroflow { | |
| class CosineScheduler { | |
| public: | |
| enum class Phase { WARMUP, COSINE, DONE }; | |
| float lr_max_; | |
| float lr_min_; | |
| size_t warmup_steps_; | |
| size_t total_steps_; | |
| CosineScheduler(float lr_max, size_t total_steps, | |
| float lr_min_ratio = 0.1f, float warmup_ratio = 0.01f); | |
| float get_lr(size_t step) const; | |
| Phase get_phase(size_t step) const; | |
| }; | |
| } // namespace neuroflow | |