pub struct AdafactorConfig { /* private fields */ }Expand description
Adafactor configuration.
By default, the supplied learning rate caps the relative step size at
min(lr, 1 / sqrt(step)), which is then multiplied by the parameter’s root mean square
(RMS). A learning rate of 0.01 gives the schedule proposed in the paper.
Disable both relative_step and scale_parameter to use an absolute learning rate
controlled entirely by an external scheduler.
Implementations§
Source§impl AdafactorConfig
impl AdafactorConfig
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new instance of the config.
§Arguments
§Optional Arguments
§grad_clipping
Optional gradient clipping applied before the Adafactor update.
- Defaults to
None
§Default Arguments
§epsilon_1
Positive constant added to squared gradients for numerical stability.
- Defaults to
1e-30
§epsilon_2
Positive lower bound on the parameter RMS when scaling the step size.
- Defaults to
1e-3
§clip_threshold
Positive upper bound on the RMS of the normalized update before learning rate scaling. This is separate from gradient clipping.
- Defaults to
1.0
§decay_rate
Negative exponent in the second moment decay schedule beta_2 = 1 - step^decay_rate.
- Defaults to
-0.8
§relative_step
Whether to cap the supplied learning rate by 1 / sqrt(step).
- Defaults to
true
§scale_parameter
Whether to multiply the step size by max(epsilon_2, RMS(parameter)).
- Defaults to
true
§weight_decay
Decoupled weight decay coefficient, multiplied by the supplied learning rate.
- Defaults to
0.0
Source§impl AdafactorConfig
impl AdafactorConfig
Sourcepub fn with_epsilon_1(self, epsilon_1: f32) -> Self
pub fn with_epsilon_1(self, epsilon_1: f32) -> Self
Sets the value for the field epsilon_1.
Positive constant added to squared gradients for numerical stability.
- Defaults to
1e-30
Sourcepub fn with_epsilon_2(self, epsilon_2: f32) -> Self
pub fn with_epsilon_2(self, epsilon_2: f32) -> Self
Sets the value for the field epsilon_2.
Positive lower bound on the parameter RMS when scaling the step size.
- Defaults to
1e-3
Sourcepub fn with_clip_threshold(self, clip_threshold: f32) -> Self
pub fn with_clip_threshold(self, clip_threshold: f32) -> Self
Sets the value for the field clip_threshold.
Positive upper bound on the RMS of the normalized update before learning rate scaling. This is separate from gradient clipping.
- Defaults to
1.0
Sourcepub fn with_decay_rate(self, decay_rate: f64) -> Self
pub fn with_decay_rate(self, decay_rate: f64) -> Self
Sets the value for the field decay_rate.
Negative exponent in the second moment decay schedule beta_2 = 1 - step^decay_rate.
- Defaults to
-0.8
Sourcepub fn with_relative_step(self, relative_step: bool) -> Self
pub fn with_relative_step(self, relative_step: bool) -> Self
Sets the value for the field relative_step.
Whether to cap the supplied learning rate by 1 / sqrt(step).
- Defaults to
true
Sourcepub fn with_scale_parameter(self, scale_parameter: bool) -> Self
pub fn with_scale_parameter(self, scale_parameter: bool) -> Self
Sets the value for the field scale_parameter.
Whether to multiply the step size by max(epsilon_2, RMS(parameter)).
- Defaults to
true
Sourcepub fn with_weight_decay(self, weight_decay: f32) -> Self
pub fn with_weight_decay(self, weight_decay: f32) -> Self
Sets the value for the field weight_decay.
Decoupled weight decay coefficient, multiplied by the supplied learning rate.
- Defaults to
0.0
Sourcepub fn with_grad_clipping(
self,
grad_clipping: Option<GradientClippingConfig>,
) -> Self
pub fn with_grad_clipping( self, grad_clipping: Option<GradientClippingConfig>, ) -> Self
Sets the value for the field grad_clipping.
Optional gradient clipping applied before the Adafactor update.
- Defaults to
None
Source§impl AdafactorConfig
impl AdafactorConfig
Sourcepub fn build(&self) -> Adafactor
pub fn build(&self) -> Adafactor
Build the per-parameter Adafactor optimizer.
Use Self::init to construct a whole-module optimizer with the configured gradient
clipping, or pass this optimizer to ModuleOptimizer::with_group.
§Panics
Panics if either epsilon or the clipping threshold is not positive and finite, the decay exponent is not negative and finite, or weight decay is not nonnegative and finite.
Sourcepub fn init(&self) -> ModuleOptimizer
pub fn init(&self) -> ModuleOptimizer
Initialize a whole-module Adafactor optimizer.
Trait Implementations§
Source§impl Clone for AdafactorConfig
impl Clone for AdafactorConfig
Source§impl Config for AdafactorConfig
impl Config for AdafactorConfig
Source§fn save<P>(&self, file: P) -> Result<(), Error>
fn save<P>(&self, file: P) -> Result<(), Error>
std only.Source§fn load<P>(file: P) -> Result<Self, ConfigError>
fn load<P>(file: P) -> Result<Self, ConfigError>
std only.Source§fn load_binary(data: &[u8]) -> Result<Self, ConfigError>
fn load_binary(data: &[u8]) -> Result<Self, ConfigError>
Source§impl Debug for AdafactorConfig
impl Debug for AdafactorConfig
Source§impl<'de> Deserialize<'de> for AdafactorConfig
impl<'de> Deserialize<'de> for AdafactorConfig
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Source§impl Display for AdafactorConfig
impl Display for AdafactorConfig
Auto Trait Implementations§
impl Freeze for AdafactorConfig
impl RefUnwindSafe for AdafactorConfig
impl Send for AdafactorConfig
impl Sync for AdafactorConfig
impl Unpin for AdafactorConfig
impl UnsafeUnpin for AdafactorConfig
impl UnwindSafe for AdafactorConfig
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneExpand for Twhere
T: Clone,
impl<T> CloneExpand for Twhere
T: Clone,
fn __expand_clone_method(&self, _: &Scope) -> T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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> ⓘ
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> ⓘ
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 more