diffusion_rs_common::nn::optim

Trait Optimizer

Source
pub trait Optimizer: Sized {
    type Config: Sized;

    // Required methods
    fn new(vars: Vec<Var>, config: Self::Config) -> Result<Self>;
    fn step(&mut self, grads: &GradStore) -> Result<()>;
    fn learning_rate(&self) -> f64;
    fn set_learning_rate(&mut self, lr: f64);

    // Provided methods
    fn empty(config: Self::Config) -> Result<Self> { ... }
    fn backward_step(&mut self, loss: &Tensor) -> Result<()> { ... }
    fn from_slice(vars: &[&Var], config: Self::Config) -> Result<Self> { ... }
}
Expand description

The interface optimizers should implement.

Required Associated Types§

Required Methods§

Source

fn new(vars: Vec<Var>, config: Self::Config) -> Result<Self>

Source

fn step(&mut self, grads: &GradStore) -> Result<()>

Source

fn learning_rate(&self) -> f64

Source

fn set_learning_rate(&mut self, lr: f64)

Provided Methods§

Source

fn empty(config: Self::Config) -> Result<Self>

Source

fn backward_step(&mut self, loss: &Tensor) -> Result<()>

Source

fn from_slice(vars: &[&Var], config: Self::Config) -> Result<Self>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§