class_docstr: Categorical LSTM Model.
  
  A model represented by a Categorical distribution
  which is parameterized by a Long short-term memory (LSTM).
  
  Args:
      output_dim (int): Dimension of the network output.
      hidden_dim (int): Hidden dimension for LSTM cell.
      name (str): Policy name, also the variable scope.
      hidden_nonlinearity (callable): Activation function for intermediate
          dense layer(s). It should return a tf.Tensor. Set it to
          None to maintain a linear activation.
      hidden_w_init (callable): Initializer function for the weight
          of intermediate dense layer(s). The function should return a
          tf.Tensor.
      hidden_b_init (callable): Initializer function for the bias
          of intermediate dense layer(s). The function should return a
          tf.Tensor.
      recurrent_nonlinearity (callable): Activation function for recurrent
          layers. It should return a tf.Tensor. Set it to None to
          maintain a linear activation.
      recurrent_w_init (callable): Initializer function for the weight
          of recurrent layer(s). The function should return a
          tf.Tensor.
      output_nonlinearity (callable): Activation function for output dense
          layer. It should return a tf.Tensor. Set it to None to
          maintain a linear activation.
      output_w_init (callable): Initializer function for the weight
          of output dense layer(s). The function should return a
          tf.Tensor.
      output_b_init (callable): Initializer function for the bias
          of output dense layer(s). The function should return a
          tf.Tensor.
      hidden_state_init (callable): Initializer function for the
          initial hidden state. The functino should return a tf.Tensor.
      hidden_state_init_trainable (bool): Bool for whether the initial
          hidden state is trainable.
      cell_state_init (callable): Initializer function for the
          initial cell state. The functino should return a tf.Tensor.
      cell_state_init_trainable (bool): Bool for whether the initial
          cell state is trainable.
      forget_bias (bool): If True, add 1 to the bias of the forget gate at
          initialization. It's used to reduce the scale of forgetting at the
          beginning of the training.
      layer_normalization (bool): Bool for using layer normalization or not.
docstr: Build model.
  
  Args:
      state_input (tf.Tensor): Entire time-series observation input,
          with shape :math:`(N, T, S^*)`.
      step_input (tf.Tensor): Single timestep observation input,
          with shape :math:`(N, S^*)`.
      step_hidden (tf.Tensor): Hidden state for step, with shape
          :math:`(N, S^*)`.
      step_cell (tf.Tensor): Cell state for step, with shape
          :math:`(N, S^*)`.
      name (str): Inner model name, also the variable scope of the
          inner model, if exist. One example is
          garage.tf.models.Sequential.
  
  Returns:
      tfp.distributions.OneHotCategorical: Policy distribution.
      tf.Tensor: Step output, with shape :math:`(N, S^*)`
      tf.Tensor: Step hidden state, with shape :math:`(N, S^*)`
      tf.Tensor: Step cell state, with shape :math:`(N, S^*)`
      tf.Tensor: Initial hidden state, used to reset the hidden state
          when policy resets. Shape: :math:`(S^*)`
      tf.Tensor: Initial cell state, used to reset the cell state
          when policy resets. Shape: :math:`(S^*)`
code: def _build(
      self, state_input, step_input, step_hidden, step_cell, name=None
  ):
      """Build model.
  
      Args:
          state_input (tf.Tensor): Entire time-series observation input,
              with shape :math:`(N, T, S^*)`.
          step_input (tf.Tensor): Single timestep observation input,
              with shape :math:`(N, S^*)`.
          step_hidden (tf.Tensor): Hidden state for step, with shape
              :math:`(N, S^*)`.
          step_cell (tf.Tensor): Cell state for step, with shape
              :math:`(N, S^*)`.
          name (str): Inner model name, also the variable scope of the
              inner model, if exist. One example is
              garage.tf.models.Sequential.
  
      Returns:
          tfp.distributions.OneHotCategorical: Policy distribution.
          tf.Tensor: Step output, with shape :math:`(N, S^*)`
          tf.Tensor: Step hidden state, with shape :math:`(N, S^*)`
          tf.Tensor: Step cell state, with shape :math:`(N, S^*)`
          tf.Tensor: Initial hidden state, used to reset the hidden state
              when policy resets. Shape: :math:`(S^*)`
          tf.Tensor: Initial cell state, used to reset the cell state
              when policy resets. Shape: :math:`(S^*)`
  
      """
      (
          outputs,
          step_output,
          step_hidden,
          step_cell,
          init_hidden,
          init_cell,
      ) = super()._build(
          state_input, step_input, step_hidden, step_cell, name=name
      )
      dist = tfp.distributions.OneHotCategorical(probs=outputs)
      return (
          dist,
          step_output,
          step_hidden,
          step_cell,
          init_hidden,
          init_cell,
      )
  
file_path: garage/src/garage/tf/models/categorical_lstm_model.py
imports: import tensorflow
  import tensorflow_probability
  from garage.experiment import deterministic
  from garage.tf.models.lstm_model import LSTMModel
label_desc: Use image node_id 3 for calling the CategoricalLSTMModel obj's underlying member method code with example usage: obj._build(state_input, step_input, step_hidden, step_cell, name) and returns: dist,  step_output,  step_hidden,  step_cell,  init_hidden,  init_cell