class_docstr: Echo State recurrent Network (ESN) cell.
  This implements the recurrent cell from the paper:
      H. Jaeger
      "The "echo state" approach to analysing and training recurrent neural networks".
      GMD Report148, German National Research Center for Information Technology, 2001.
      https://www.researchgate.net/publication/215385037
  
  Example:
  
  >>> inputs = np.random.random([30,23,9]).astype(np.float32)
  >>> ESNCell = tfa.rnn.ESNCell(4)
  >>> rnn = tf.keras.layers.RNN(ESNCell, return_sequences=True, return_state=True)
  >>> outputs, memory_state = rnn(inputs)
  >>> outputs.shape
  TensorShape([30, 23, 4])
  >>> memory_state.shape
  TensorShape([30, 4])
  
  Args:
      units: Positive integer, dimensionality in the reservoir.
      connectivity: Float between 0 and 1.
          Connection probability between two reservoir units.
          Default: 0.1.
      leaky: Float between 0 and 1.
          Leaking rate of the reservoir.
          If you pass 1, it is the special case the model does not have leaky
          integration.
          Default: 1.
      spectral_radius: Float between 0 and 1.
          Desired spectral radius of recurrent weight matrix.
          Default: 0.9.
      use_norm2: Boolean, whether to use the p-norm function (with p=2) as an upper
          bound of the spectral radius so that the echo state property is satisfied.
          It  avoids to compute the eigenvalues which has an exponential complexity.
          Default: False.
      use_bias: Boolean, whether the layer uses a bias vector.
          Default: True.
      activation: Activation function to use.
          Default: hyperbolic tangent (`tanh`).
      kernel_initializer: Initializer for the `kernel` weights matrix,
          used for the linear transformation of the inputs.
          Default: `glorot_uniform`.
      recurrent_initializer: Initializer for the `recurrent_kernel` weights matrix,
          used for the linear transformation of the recurrent state.
          Default: `glorot_uniform`.
      bias_initializer: Initializer for the bias vector.
          Default: `zeros`.
  Call arguments:
      inputs: A 2D tensor (batch x num_units).
      states: List of state tensors corresponding to the previous timestep.
code: def __init__(
      self,
      units: int,
      connectivity: float = 0.1,
      leaky: float = 1,
      spectral_radius: float = 0.9,
      use_norm2: bool = False,
      use_bias: bool = True,
      activation: Activation = "tanh",
      kernel_initializer: Initializer = "glorot_uniform",
      recurrent_initializer: Initializer = "glorot_uniform",
      bias_initializer: Initializer = "zeros",
      **kwargs,
  ):
      super().__init__(**kwargs)
      self.units = units
      self.connectivity = connectivity
      self.leaky = leaky
      self.spectral_radius = spectral_radius
      self.use_norm2 = use_norm2
      self.use_bias = use_bias
      self.activation = tf.keras.activations.get(activation)
      self.kernel_initializer = tf.keras.initializers.get(
          kernel_initializer
      )
      self.recurrent_initializer = tf.keras.initializers.get(
          recurrent_initializer
      )
      self.bias_initializer = tf.keras.initializers.get(
          bias_initializer
      )
  
      self._state_size = units
      self._output_size = units
  
file_path: addons/tensorflow_addons/rnn/esn_cell.py
imports: import tensorflow
  from typeguard import typechecked
  from tensorflow_addons.rnn.abstract_rnn_cell import AbstractRNNCell
  from tensorflow_addons.utils.types import Activation, Initializer
label_desc: Use image node_id 1 to create a new ESNCell object from inherited base classes: AbstractRNNCell with example: obj = ESNCell(units, connectivity, leaky, spectral_radius, use_norm2, use_bias, activation, kernel_initializer, recurrent_initializer, bias_initializer)