class_docstr: Categorical MLP Model.
  
  A model represented by a Categorical distribution
  which is parameterized by a multilayer perceptron (MLP).
  
  Args:
      output_dim (int): Dimension of the network output.
      hidden_sizes (list[int]): Output dimension of dense layer(s).
          For example, (32, 32) means this MLP consists of two
          hidden layers, each with 32 hidden units.
      name (str): Model 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.
      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.
      layer_normalization (bool): Bool for using layer normalization or not.
docstr: Build model.
  
  Args:
      state_input (tf.Tensor): Observation inputs.
      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.
code: def _build(self, state_input, name=None):
      """Build model.
  
      Args:
          state_input (tf.Tensor): Observation inputs.
          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.
  
      """
      prob = super()._build(state_input, name=name)
      return tfp.distributions.OneHotCategorical(probs=prob)
  
file_path: garage/src/garage/tf/models/categorical_mlp_model.py
imports: import tensorflow
  import tensorflow_probability
  from garage.experiment import deterministic
  from garage.tf.models.mlp_model import MLPModel
label_desc: Use image node_id 3 for calling the CategoricalMLPModel obj's underlying member method code with example usage: obj._build(state_input, name) and returns: tfp