See the guide: RNN and Cells (contrib) > Base interface for all RNN Cells
Abstract object representing an RNN cell.
The definition of cell in this package differs from the definition used in the literature. In the literature, cell refers to an object with a single scalar output. The definition in this package refers to a horizontal array of such units.
An RNN cell, in the most abstract setting, is anything that has
a state and performs some operation that takes a matrix of inputs.
This operation results in an output matrix with
self.state_size is an integer, this operation also results in a new
state matrix with
self.state_size columns. If
self.state_size is a
tuple of integers, then it results in a tuple of
matrices, each with a column size corresponding to values in
This module provides a number of basic commonly used RNN cells, such as
LSTM (Long Short Term Memory) or GRU (Gated Recurrent Unit), and a number
of operators that allow add dropouts, projections, or embeddings for inputs.
Constructing multi-layer cells is supported by the class
or by calling the
rnn ops several times. Every
RNNCell must have the
properties below and implement
__call__ with the following signature.
Integer or TensorShape: size of outputs produced by this cell.
size(s) of state(s) used by this cell.
It can be represented by an Integer, a TensorShape or a tuple of Integers or TensorShapes.
Return zero-filled state tensor(s).
batch_size: int, float, or unit Tensor representing the batch size.
dtype: the data type to use for the state.
state_size is an int or TensorShape, then the return value is a
N-D tensor of shape
[batch_size x state_size] filled with zeros.
state_size is a nested list or tuple, then the return value is
a nested list or tuple (of the same structure) of
2-D tensors with
[batch_size x s] for each s in