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§
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§
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