mlpack
Public Member Functions | List of all members
mlpack::ann::LSTM< InputDataType, OutputDataType > Class Template Reference

Implementation of the LSTM module class. More...

#include <lstm.hpp>

Public Member Functions

 LSTM ()
 Create the LSTM object.
 
 LSTM (const size_t inSize, const size_t outSize, const size_t rho=std::numeric_limits< size_t >::max())
 Create the LSTM layer object using the specified parameters. More...
 
 LSTM (const LSTM &layer)
 Copy constructor.
 
 LSTM (LSTM &&)
 Move constructor.
 
LSTMoperator= (const LSTM &layer)
 Copy assignment operator.
 
LSTMoperator= (LSTM &&layer)
 Move assignment operator.
 
template<typename InputType , typename OutputType >
void Forward (const InputType &input, OutputType &output)
 Ordinary feed-forward pass of a neural network, evaluating the function f(x) by propagating the activity forward through f. More...
 
template<typename InputType , typename OutputType >
void Forward (const InputType &input, OutputType &output, OutputType &cellState, bool useCellState=false)
 Ordinary feed-forward pass of a neural network, evaluating the function f(x) by propagating the activity forward through f. More...
 
template<typename InputType , typename ErrorType , typename GradientType >
void Backward (const InputType &input, const ErrorType &gy, GradientType &g)
 Ordinary feed backward pass of a neural network, calculating the function f(x) by propagating x backwards trough f. More...
 
void Reset ()
 
void ResetCell (const size_t size)
 
template<typename InputType , typename ErrorType , typename GradientType >
void Gradient (const InputType &input, const ErrorType &error, GradientType &gradient)
 
size_t Rho () const
 Get the maximum number of steps to backpropagate through time (BPTT).
 
size_t & Rho ()
 Modify the maximum number of steps to backpropagate through time (BPTT).
 
OutputDataType const & Parameters () const
 Get the parameters.
 
OutputDataType & Parameters ()
 Modify the parameters.
 
OutputDataType const & OutputParameter () const
 Get the output parameter.
 
OutputDataType & OutputParameter ()
 Modify the output parameter.
 
OutputDataType const & Delta () const
 Get the delta.
 
OutputDataType & Delta ()
 Modify the delta.
 
OutputDataType const & Gradient () const
 Get the gradient.
 
OutputDataType & Gradient ()
 Modify the gradient.
 
size_t InSize () const
 Get the number of input units.
 
size_t OutSize () const
 Get the number of output units.
 
size_t WeightSize () const
 Get the size of the weights.
 
size_t InputShape () const
 Get the shape of the input.
 
template<typename Archive >
void serialize (Archive &ar, const uint32_t)
 Serialize the layer.
 

Detailed Description

template<typename InputDataType = arma::mat, typename OutputDataType = arma::mat>
class mlpack::ann::LSTM< InputDataType, OutputDataType >

Implementation of the LSTM module class.

The implementation corresponds to the following algorithm:

\begin{eqnarray} i &=& sigmoid(W \cdot x + W \cdot h + W \cdot c + b) \\ f &=& sigmoid(W \cdot x + W \cdot h + W \cdot c + b) \\ z &=& tanh(W \cdot x + W \cdot h + b) \\ c &=& f \odot c + i \odot z \\ o &=& sigmoid(W \cdot x + W \cdot h + W \cdot c + b) \\ h &=& o \odot tanh(c) \end{eqnarray}

Note that if an LSTM layer is desired as the first layer of a neural network, an IdentityLayer should be added to the network as the first layer, and then the LSTM layer should be added.

For more information, see the following.

@article{Graves2013,
author = {Alex Graves and Abdel{-}rahman Mohamed and Geoffrey E. Hinton},
title = {Speech Recognition with Deep Recurrent Neural Networks},
journal = CoRR},
year = {2013},
url = {http://arxiv.org/abs/1303.5778},
}
See also
FastLSTM for a faster LSTM version which combines the calculation of the input, forget, output gates and hidden state in a single step.
Template Parameters
InputDataTypeType of the input data (arma::colvec, arma::mat, arma::sp_mat or arma::cube).
OutputDataTypeType of the output data (arma::colvec, arma::mat, arma::sp_mat or arma::cube).

Constructor & Destructor Documentation

◆ LSTM()

template<typename InputDataType , typename OutputDataType >
mlpack::ann::LSTM< InputDataType, OutputDataType >::LSTM ( const size_t  inSize,
const size_t  outSize,
const size_t  rho = std::numeric_limits<size_t>::max() 
)

Create the LSTM layer object using the specified parameters.

Parameters
inSizeThe number of input units.
outSizeThe number of output units.
rhoMaximum number of steps to backpropagate through time (BPTT).

Member Function Documentation

◆ Backward()

template<typename InputDataType , typename OutputDataType >
template<typename InputType , typename ErrorType , typename GradientType >
void mlpack::ann::LSTM< InputDataType, OutputDataType >::Backward ( const InputType &  input,
const ErrorType &  gy,
GradientType &  g 
)

Ordinary feed backward pass of a neural network, calculating the function f(x) by propagating x backwards trough f.

Using the results from the feed forward pass.

Parameters
inputThe propagated input activation.
gyThe backpropagated error.
gThe calculated gradient.

◆ Forward() [1/2]

template<typename InputDataType , typename OutputDataType >
template<typename InputType , typename OutputType >
void mlpack::ann::LSTM< InputDataType, OutputDataType >::Forward ( const InputType &  input,
OutputType &  output 
)

Ordinary feed-forward pass of a neural network, evaluating the function f(x) by propagating the activity forward through f.

Parameters
inputInput data used for evaluating the specified function.
outputResulting output activation.

Locally-stored cellState.

◆ Forward() [2/2]

template<typename InputDataType , typename OutputDataType >
template<typename InputType , typename OutputType >
void mlpack::ann::LSTM< InputDataType, OutputDataType >::Forward ( const InputType &  input,
OutputType &  output,
OutputType &  cellState,
bool  useCellState = false 
)

Ordinary feed-forward pass of a neural network, evaluating the function f(x) by propagating the activity forward through f.

Parameters
inputInput data used for evaluating the specified function.
outputResulting output activation.
cellStateCell state of the LSTM.
useCellStateUse the cellState passed in the LSTM cell.

The documentation for this class was generated from the following files: