pub struct LSTM { /* private fields */ }Expand description
Long Short-Term Memory (LSTM) layer.
Standard LSTM with forget, input, output gates and cell state.
f_t = σ(W_if @ x_t + W_hf @ h_{t-1} + b_f) // forget gate
i_t = σ(W_ii @ x_t + W_hi @ h_{t-1} + b_i) // input gate
g_t = tanh(W_ig @ x_t + W_hg @ h_{t-1} + b_g) // candidate cell
o_t = σ(W_io @ x_t + W_ho @ h_{t-1} + b_o) // output gate
c_t = f_t * c_{t-1} + i_t * g_t // cell state
h_t = o_t * tanh(c_t) // hidden state§Reference
Hochreiter, S., & Schmidhuber, J. (1997). Long Short-Term Memory. Neural Computation.
Implementations§
Source§impl LSTM
impl LSTM
pub fn new(input_size: usize, hidden_size: usize) -> Self
Sourcepub fn forward_step(
&self,
x: &Tensor,
h: &Tensor,
c: &Tensor,
) -> (Tensor, Tensor)
pub fn forward_step( &self, x: &Tensor, h: &Tensor, c: &Tensor, ) -> (Tensor, Tensor)
Forward pass for single timestep.
Sourcepub fn forward_sequence(
&self,
x: &Tensor,
h0: Option<&Tensor>,
c0: Option<&Tensor>,
) -> (Tensor, Tensor, Tensor)
pub fn forward_sequence( &self, x: &Tensor, h0: Option<&Tensor>, c0: Option<&Tensor>, ) -> (Tensor, Tensor, Tensor)
Forward pass for sequence [batch, seq_len, input_size].
pub fn input_size(&self) -> usize
Trait Implementations§
Source§impl Module for LSTM
impl Module for LSTM
Source§fn parameters_mut(&mut self) -> Vec<&mut Tensor>
fn parameters_mut(&mut self) -> Vec<&mut Tensor>
Get mutable references to all learnable parameters. Read more
Source§fn refresh_caches(&mut self)
fn refresh_caches(&mut self)
Refresh any cached computations after parameters have been modified. Read more
Source§fn num_parameters(&self) -> usize
fn num_parameters(&self) -> usize
Get the number of learnable parameters.
Auto Trait Implementations§
impl Freeze for LSTM
impl !RefUnwindSafe for LSTM
impl Send for LSTM
impl Sync for LSTM
impl Unpin for LSTM
impl UnsafeUnpin for LSTM
impl !UnwindSafe for LSTM
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
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 more