class_docstr: Block GRU cell implementation.
  
  Deprecated: use GRUBlockCellV2 instead.
  
  The implementation is based on:  http://arxiv.org/abs/1406.1078
  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
  ```
docstr: Initialize the Block GRU cell.
  
  Args:
    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`.
  
  Raises:
    ValueError: if both cell_size and num_units are not None;
      or both are None.
docstr_tok: ["Initialize","the","Block","GRU","cell",".","Args",":","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","`",".","Raises",":","ValueError",":","if","both","cell_size","and","num_units","are","not","None",";","or","both","are","None","."]
code: def __init__(
      self, num_units=None, cell_size=None, reuse=None, name="gru_cell"
  ):
      """Initialize the Block GRU cell.
  
      Args:
        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`.
  
      Raises:
        ValueError: if both cell_size and num_units are not None;
          or both are None.
      """
      super(GRUBlockCell, self).__init__(_reuse=reuse, name=name)
      if (cell_size is None) == (num_units is None):
          raise ValueError(
              "Exactly one of num_units or cell_size must be provided."
          )
      if num_units is None:
          num_units = cell_size
      self._cell_size = num_units
      # Inputs must be 2-dimensional.
      self.input_spec = input_spec.InputSpec(ndim=2)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import tensor_shape
  from tensorflow.python.keras.engine import input_spec
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import gen_rnn_ops
  from tensorflow.python.ops import init_ops
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn_ops
  from tensorflow.python.ops import rnn_cell_impl
  from tensorflow.python.util.deprecation import deprecated_args
label_desc: Use image node_id 1 to create a new GRUBlockCell object from inherited base classes: LayerRNNCell with example: obj = GRUBlockCell(num_units, cell_size, reuse, name)