torsh-optim
Optimization algorithms for ToRSh with PyTorch-compatible API, powered by scirs2-optim.
Overview
This crate provides state-of-the-art optimization algorithms including:
- SGD: Stochastic Gradient Descent with momentum and Nesterov acceleration
- Adam: Adaptive Moment Estimation optimizer
- AdamW: Adam with decoupled weight decay
- Learning Rate Schedulers: Various scheduling strategies
Usage
Basic Optimizer Usage
use *;
use *;
// Create a model
let model = create_model;
let params = model.parameters;
// SGD optimizer
let mut optimizer = SGDnew;
// Training loop
for epoch in 0..num_epochs
Adam Optimizer
use Adam;
// Create Adam optimizer with default parameters
let mut optimizer = new;
// Or use the builder pattern
let mut optimizer = new
.lr
.betas
.weight_decay
.build;
AdamW Optimizer
use AdamW;
// AdamW with decoupled weight decay
let mut optimizer = new;
SGD with Momentum
use SGD;
// SGD with momentum
let mut optimizer = SGDnew;
// SGD with Nesterov momentum
let mut optimizer = new
.momentum
.weight_decay
.nesterov
.build;
Learning Rate Schedulers
Step LR
use ;
let optimizer = new;
let mut scheduler = new;
for epoch in 0..num_epochs
Exponential LR
use ExponentialLR;
let mut scheduler = new;
Cosine Annealing
use CosineAnnealingLR;
let mut scheduler = new;
Reduce LR on Plateau
use ReduceLROnPlateau;
let mut scheduler = new?;
// In training loop
let val_loss = validate?;
scheduler.step;
One Cycle LR
use OneCycleLR;
let mut scheduler = new;
Parameter Groups
// Different learning rates for different layers
let mut optimizer = new;
// Add another parameter group with different settings
let mut options = new;
options.insert;
options.insert;
optimizer.add_param_group;
State Dict (Checkpointing)
// Save optimizer state
let state_dict = optimizer.state_dict;
save_checkpoint?;
// Load optimizer state
let loaded_state = load_checkpoint?;
optimizer.load_state_dict?;
Advanced Usage
Gradient Clipping
use clip;
// Clip gradients before optimizer step
let total_norm = clip_grad_norm;
// Then step
optimizer.step?;
Custom Optimizer Options
let mut param_groups = vec!;
// Encoder parameters with lower learning rate
param_groups.push;
// Decoder parameters with higher learning rate
param_groups.push;
Integration with SciRS2
This crate leverages scirs2-optim for:
- Optimized parameter updates
- Efficient state management
- Hardware acceleration support
- Advanced optimization algorithms
All optimizers are designed to work seamlessly with ToRSh's autograd system while benefiting from scirs2's performance optimizations.
License
Licensed under the Apache License, Version 2.0. See LICENSE for details.