View source on GitHub

Block GRU cell implementation.

Inherits From: LayerRNNCell

The implementation is based on: Computes the GRU cell forward propagation for 1 time step.

This kernel op implements the following mathematical equations:

Biases are initialized with:

  • b_ru - constant_initializer(1.0)
  • b_c - constant_initializer(0.0)
x_h_prev = [x, h_prev]

[r_bar u_bar] = x_h_prev * w_ru + b_ru

r = sigmoid(r_bar)
u = sigmoid(u_bar)

h_prevr = h_prev \circ r

x_h_prevr = [x h_prevr]

c_bar = x_h_prevr * w_c + b_c
c = tanh(c_bar)

h = (1-u) \circ c + u \circ h_prev

num_units int, The number of units in the GRU cell.
cell_size int, The old (deprecated) name for num_units.
reuse (optional) boolean describing whether to reuse variables in an existing scope. If not True, and the existing scope already has the given variables, an error is raised.
name String, the name of the layer. Layers with the same name will share weights, but to avoid mistakes we require reuse=True in such cases. By default this is "lstm_cell", for variable-name compatibility with tf.compat.v1.nn.rnn_cell.GRUCell.

ValueError if both cell_size and num_units are not None; or both are None.


output_size Integer or TensorShape: size of outputs produced by this cell.

state_size 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.



View source


View source

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.

If state_size is an int or TensorShape, then the return value is a N-D tensor of shape [batch_size, state_size] filled with zeros.

If 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 the shapes [batch_size, s] for each s in state_size.