| 1879 | static float const k_log_2 = std::log(2.f); |
| 1880 | |
| 1881 | void lr_opt::init() { |
| 1882 | if (lr_min > 0 && lr_min < lr0) { |
| 1883 | float nhalf = std::log(lr0 / lr_min) / k_log_2; |
| 1884 | float e = epochs; |
| 1885 | if (decay_epochs > 0 && decay_epochs < e) { |
| 1886 | e = decay_epochs; |
| 1887 | } else { |
| 1888 | decay_epochs = e; |
| 1889 | } |
| 1890 | scale_epoch = nhalf / e; |
| 1891 | } |
| 1892 | } |
| 1893 | |
| 1894 | float lr_opt::get_lr(float epoch) const { |
| 1895 | float r = lr_min <= 0 ? lr0 : |
no test coverage detected