Skip to main content

Adam

Struct Adam 

Source
pub struct Adam { /* private fields */ }
Expand description

Adam optimiser state.

Keeps first- and second-moment vectors m and v for every parameter and applies bias correction using the timestep t.

Implementations§

Source§

impl Adam

Source

pub fn new(param_count: usize) -> Self

Create a new Adam optimiser for param_count parameters.

Defaults follow the original paper: lr = 0.001, beta1 = 0.9, beta2 = 0.999, eps = 1e-8.

Source

pub fn with_lr(learning_rate: f32, param_count: usize) -> Self

Create an Adam optimiser with a custom learning rate.

Source

pub fn with_hyperparams( learning_rate: f32, beta1: f32, beta2: f32, eps: f32, param_count: usize, ) -> Self

Create an Adam optimiser with full control over all hyperparameters.

Source

pub fn param_count(&self) -> usize

Number of parameters tracked by this optimiser.

Source

pub fn timestep(&self) -> u64

Current timestep.

Source

pub fn step(&mut self, params: &mut [f32], grad: &[f32])

Perform one Adam update on params using the supplied gradient.

params and grad must have the same length as the optimiser’s parameter count.

Source

pub fn step_clipped(&mut self, params: &mut [f32], grad: &[f32], max_norm: f32)

Perform one Adam update after clipping the gradient to max_norm.

If the global gradient norm is larger than max_norm, the whole gradient is rescaled before the Adam moment update. This matches the common “clip by global norm” behaviour.

Source

pub fn step_slices(&mut self, params: &mut [&mut [f32]], grads: &[&[f32]])

Perform one Adam update on multiple parameter slices.

params and grads must have the same number of slices, and each corresponding slice must have the same length. This avoids flattening and reloading parameters when a model is stored in separate tensors.

Source

pub fn step_slices_clipped( &mut self, params: &mut [&mut [f32]], grads: &[&[f32]], max_norm: f32, )

Perform one Adam update on multiple slices after global norm clipping.

Source

pub fn reset(&mut self)

Reset all moment vectors to zero without changing hyperparameters.

Trait Implementations§

Source§

impl Clone for Adam

Source§

fn clone(&self) -> Adam

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Adam

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Adam

§

impl RefUnwindSafe for Adam

§

impl Send for Adam

§

impl Sync for Adam

§

impl Unpin for Adam

§

impl UnsafeUnpin for Adam

§

impl UnwindSafe for Adam

Blanket Implementations§

Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more