Skip to main content

LessSimpleOptimizer

Trait LessSimpleOptimizer 

Source
pub trait LessSimpleOptimizer<B: Backend>: SimpleOptimizer<B> {
    // Required method
    fn many_steps<const D: usize>(
        &self,
        lr_function: impl FnMut(usize) -> LearningRate,
        num_steps: usize,
        grad_function: impl FnMut(Tensor<B, D>) -> Tensor<B, D>,
        tensor: Tensor<B, D>,
        state: Option<Self::State<D>>,
    ) -> (Tensor<B, D>, Option<Self::State<D>>);
}
Expand description

A optimizer that allows for many steps with a given learning schedule and a way of evaluating the gradient function on arbitrary points. This way we can step using SimpleOptimizer::step with that gradient several times.

Required Methods§

Source

fn many_steps<const D: usize>( &self, lr_function: impl FnMut(usize) -> LearningRate, num_steps: usize, grad_function: impl FnMut(Tensor<B, D>) -> Tensor<B, D>, tensor: Tensor<B, D>, state: Option<Self::State<D>>, ) -> (Tensor<B, D>, Option<Self::State<D>>)

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl<B: Backend, T: SimpleOptimizer<B>> LessSimpleOptimizer<B> for T

The implementation of LessSimpleOptimizer is completely determined by how SimpleOptimizer has been implemented because we are just taking gradients using the input grad_function and steping with SimpleOptimizer::step