View source on GitHub
|
Long Short-Term Memory layer - Hochreiter 1997.
Inherits From: RNN, Layer, Module
tf.keras.layers.LSTM(
units,
activation='tanh',
recurrent_activation='sigmoid',
use_bias=True,
kernel_initializer='glorot_uniform',
recurrent_initializer='orthogonal',
bias_initializer='zeros',
unit_forget_bias=True,
kernel_regularizer=None,
recurrent_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
recurrent_constraint=None,
bias_constraint=None,
dropout=0.0,
recurrent_dropout=0.0,
return_sequences=False,
return_state=False,
go_backwards=False,
stateful=False,
time_major=False,
unroll=False,
**kwargs
)
See the Keras RNN API guide for details about the usage of RNN API.
Based on available runtime hardware and constraints, this layer will choose different implementations (cuDNN-based or pure-TensorFlow) to maximize the performance. If a GPU is available and all the arguments to the layer meet the requirement of the cuDNN kernel (see below for details), the layer will use a fast cuDNN implementation.
The requirements to use the cuDNN implementation are:
activation==tanhrecurrent_activation==sigmoidrecurrent_dropout== 0unrollisFalseuse_biasisTrue- Inputs, if use masking, are strictly right-padded.
- Eager execution is enabled in the outermost context.
For example:
inputs = tf.random.normal([32, 10, 8])lstm = tf.keras.layers.LSTM(4)output = lstm(inputs)print(output.shape)(32, 4)lstm = tf.keras.layers.LSTM(4, return_sequences=True, return_state=True)whole_seq_output, final_memory_state, final_carry_state = lstm(inputs)print(whole_seq_output.shape)(32, 10, 4)print(final_memory_state.shape)(32, 4)print(final_carry_state.shape)(32, 4)
Args |
|---|
units
activation
tanh). If you pass None, no activation
is applied (ie. "linear" activation: a(x) = x).
recurrent_activation
sigmoid). If you pass None, no activation is
applied (ie. "linear" activation: a(x) = x).
use_bias
True), whether the layer uses a bias vector.
kernel_initializer
kernel weights matrix, used for
the linear transformation of the inputs. Default: glorot_uniform.
recurrent_initializer
recurrent_kernel weights
matrix, used for the linear transformation of the recurrent state.
Default: orthogonal.
bias_initializer
zeros.
unit_forget_bias
True). If True, add 1 to the bias of
the forget gate at initialization. Setting it to true will also force
bias_initializer="zeros". This is recommended in Jozefowicz et
al..
kernel_regularizer
kernel weights
matrix. Default: None.
recurrent_regularizer
recurrent_kernel weights matrix. Default: None.
bias_regularizer
None.
activity_regularizer
None.
kernel_constraint
kernel weights
matrix. Default: None.
recurrent_constraint
recurrent_kernel weights matrix. Default: None.
bias_constraint
None.
dropout
recurrent_dropout
return_sequences
False.
return_state
False.
go_backwards
False). If True, process the input
sequence backwards and return the reversed sequence.
stateful
False). If True, the last state for each
sample at index i in a batch will be used as initial state for the sample
of index i in the following batch.
time_major
inputs and outputs tensors.
If True, the inputs and outputs will be in shape
[timesteps, batch, feature], whereas in the False case, it will be
[batch, timesteps, feature]. Using time_major = True is a bit more
efficient because it avoids transposes at the beginning and end of the
RNN calculation. However, most TensorFlow data is batch-major, so by
default this function accepts input and emits output in batch-major
form.
unroll
False). If True, the network will be unrolled,
else a symbolic loop will be used. Unrolling can speed-up a RNN,
although it tends to be more memory-intensive. Unrolling is only
suitable for short sequences.
Call arguments |
|---|
inputs
[batch, timesteps, feature].
mask
[batch, timesteps] indicating whether
a given timestep should be masked (optional).
An individual True entry indicates that the corresponding timestep
should be utilized, while a False entry indicates that the
corresponding timestep should be ignored. Defaults to None.
training
dropout or
recurrent_dropout is used (optional). Defaults to None.
initial_state
None causes creation
of zero-filled initial state tensors). Defaults to None.
Attributes |
|---|
activation
bias_constraint
bias_initializer
bias_regularizer
dropout
implementation
kernel_constraint
kernel_initializer
kernel_regularizer
recurrent_activation
recurrent_constraint
recurrent_dropout
recurrent_initializer
recurrent_regularizer
states
unit_forget_bias
units
use_bias
Methods
get_dropout_mask_for_cell
get_dropout_mask_for_cell(
inputs, training, count=1
)
Get the dropout mask for RNN cell's input.
It will create mask based on context if there isn't any existing cached mask. If a new mask is generated, it will update the cache in the cell.
| Args |
|---|
inputs
training
count
| Returns | |
|---|---|
| List of mask tensor, generated or cached mask based on context. |
get_recurrent_dropout_mask_for_cell
get_recurrent_dropout_mask_for_cell(
inputs, training, count=1
)
Get the recurrent dropout mask for RNN cell.
It will create mask based on context if there isn't any existing cached mask. If a new mask is generated, it will update the cache in the cell.
| Args |
|---|
inputs
training
count
| Returns | |
|---|---|
| List of mask tensor, generated or cached mask based on context. |
reset_dropout_mask
reset_dropout_mask()
Reset the cached dropout masks if any.
This is important for the RNN layer to invoke this in it call() method
so that the cached mask is cleared before calling the cell.call(). The
mask should be cached across the timestep within the same batch, but
shouldn't be cached between batches. Otherwise it will introduce
unreasonable bias against certain index of data within the batch.
reset_recurrent_dropout_mask
reset_recurrent_dropout_mask()
Reset the cached recurrent dropout masks if any.
This is important for the RNN layer to invoke this in it call() method so that the cached mask is cleared before calling the cell.call(). The mask should be cached across the timestep within the same batch, but shouldn't be cached between batches. Otherwise it will introduce unreasonable bias against certain index of data within the batch.
reset_states
reset_states(
states=None
)
Reset the recorded states for the stateful RNN layer.
Can only be used when RNN layer is constructed with stateful = True.
Args:
states: Numpy arrays that contains the value for the initial state,
which will be feed to cell at the first time step. When the value is
None, zero filled numpy array will be created based on the cell
state size.
| Raises |
|---|
AttributeError
ValueError
ValueError
View source on GitHub