Optimizers, learning rate schedulers, and gradient clipping for neural network training.
use yscv_optim::*;
let mut optimizer = Adam::new(parameters, 1e-3);
let scheduler = CosineScheduler::new(100, 1e-3, 1e-6);
for epoch in 0..100 {
optimizer.set_lr(scheduler.get_lr(epoch));
optimizer.step();
optimizer.zero_grad();
}Sgd, Adam, AdamW, RmsProp, RAdam, Lars, Lamb, Adagrad, plus Lookahead<O> which wraps any of them.
StepLr, MultiStepLr, ExponentialLr, CosineAnnealingLr, CosineAnnealingWarmRestarts, LinearWarmupLr, PolynomialDecayLr, OneCycleLr, ReduceLrOnPlateau, CyclicLr, LambdaLr.
clip_grad_norm— L2 norm clippingclip_grad_value— element-wise value clipping
76 tests covering optimizer convergence, scheduler curves, clipping behavior.