class_docstr: Categorical CNN Model.
  
  A model represented by a Categorical distribution
  which is parameterized by a convolutional neural network (CNN) followed
  by a multilayer perceptron (MLP).
  
  Args:
      input_dim (Tuple[int, int, int]): Dimensions of unflattened input,
          which means [in_height, in_width, in_channels]. If the last 3
          dimensions of input_var is not this shape, it will be reshaped.
      output_dim (int): Dimension of the network output.
      filters (Tuple[Tuple[int, Tuple[int, int]], ...]): Number and dimension
          of filters. For example, ((3, (3, 5)), (32, (3, 3))) means there
          are two convolutional layers. The filter for the first layer have 3
          channels and its shape is (3 x 5), while the filter for the second
          layer have 32 channels and its shape is (3 x 3).
      strides (tuple[int]): The stride of the sliding window. For example,
          (1, 2) means there are two convolutional layers. The stride of the
          filter for first layer is 1 and that of the second layer is 2.
      padding (str): The type of padding algorithm to use,
          either 'SAME' or 'VALID'.
      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.
      is_image (bool): Whether observations are images or not.
      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: Network output spec.
  
  Returns:
      list[str]: Name of the model outputs, in order.
docstr_tok: ["Network","output","spec",".","Returns",":","list","[","str","]",":","Name","of","the","model","outputs",",","in","order","."]
code: def network_output_spec(self):
      """Network output spec.
  
      Returns:
          list[str]: Name of the model outputs, in order.
  
      """
      return self._mlp_model.network_output_spec()
  
file_path: garage/src/garage/tf/models/categorical_cnn_model.py
imports: import tensorflow
  from garage.experiment import deterministic
  from garage.tf.models.categorical_mlp_model import CategoricalMLPModel
  from garage.tf.models.cnn_model import CNNModel
  from garage.tf.models.model import Model
label_desc: Use image node_id 2 for calling the CategoricalCNNModel obj's underlying member method code with example usage: obj.network_output_spec() and returns: self