pub struct NaturalGradient { /* private fields */ }Expand description
Natural Gradient optimizer
Natural gradients use the Fisher Information Matrix to precondition gradients, providing better-conditioned updates especially for neural networks and probabilistic models.
Reference: “Natural Gradient Works Efficiently in Learning” (Amari, 1998)
Implementations§
Source§impl NaturalGradient
impl NaturalGradient
Sourcepub fn new(
params: Vec<Arc<RwLock<Tensor>>>,
lr: Option<f32>,
momentum: Option<f32>,
damping: Option<f32>,
fisher_update_freq: Option<usize>,
use_empirical_fisher: Option<bool>,
fisher_ema_decay: Option<f32>,
) -> Self
pub fn new( params: Vec<Arc<RwLock<Tensor>>>, lr: Option<f32>, momentum: Option<f32>, damping: Option<f32>, fisher_update_freq: Option<usize>, use_empirical_fisher: Option<bool>, fisher_ema_decay: Option<f32>, ) -> Self
Create a new Natural Gradient optimizer
Sourcepub fn builder() -> NaturalGradientBuilder
pub fn builder() -> NaturalGradientBuilder
Builder pattern for Natural Gradient optimizer
Trait Implementations§
Source§impl Optimizer for NaturalGradient
impl Optimizer for NaturalGradient
Source§fn step(&mut self) -> OptimizerResult<()>
fn step(&mut self) -> OptimizerResult<()>
Perform a single optimization step
Source§fn set_lrs(&mut self, lrs: &[f32])
fn set_lrs(&mut self, lrs: &[f32])
Set the learning rate of each parameter group individually. Read more
Source§fn add_param_group(
&mut self,
params: Vec<Arc<RwLock<Tensor>>>,
options: HashMap<String, f32>,
)
fn add_param_group( &mut self, params: Vec<Arc<RwLock<Tensor>>>, options: HashMap<String, f32>, )
Add a parameter group
Source§fn parameters(&self) -> Vec<Arc<RwLock<Tensor>>>
fn parameters(&self) -> Vec<Arc<RwLock<Tensor>>>
Get the parameter tensors managed by this optimizer. Read more
Source§fn state_dict(&self) -> OptimizerResult<OptimizerState>
fn state_dict(&self) -> OptimizerResult<OptimizerState>
Get state dict for serialization
Source§fn load_state_dict(&mut self, state: OptimizerState) -> OptimizerResult<()>
fn load_state_dict(&mut self, state: OptimizerState) -> OptimizerResult<()>
Load state dict
Auto Trait Implementations§
impl !RefUnwindSafe for NaturalGradient
impl !UnwindSafe for NaturalGradient
impl Freeze for NaturalGradient
impl Send for NaturalGradient
impl Sync for NaturalGradient
impl Unpin for NaturalGradient
impl UnsafeUnpin for NaturalGradient
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<O> OptimizerExt for Owhere
O: Optimizer,
impl<O> OptimizerExt for Owhere
O: Optimizer,
Source§fn distributed(
self,
config: DistributedConfig,
) -> OptimizerResult<DistributedOptimizer<Self>>
fn distributed( self, config: DistributedConfig, ) -> OptimizerResult<DistributedOptimizer<Self>>
Wrap this optimizer with distributed functionality