class_docstr: CategoricalCNNPolicy.
  
  A policy that contains a CNN and a MLP to make prediction based on
  a categorical distribution.
  
  It only works with akro.Discrete action space.
  
  Args:
      env_spec (garage.envs.env_spec.EnvSpec): Environment specification.
      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'.
      name (str): Policy name, also the variable scope of the policy.
      hidden_sizes (list[int]): Output dimension of dense layer(s).
          For example, (32, 32) means the MLP of this policy consists
          of two hidden layers, each with 32 hidden units.
      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.
class_docstr_tok: ["CategoricalCNNPolicy",".","A","policy","that","contains","a","CNN","and","a","MLP","to","make","prediction","based","on","a","categorical","distribution",".","It","only","works","with","akro.Discrete","action","space",".","Args",":","env_spec","(","garage.envs.env_spec.EnvSpec",")",":","Environment","specification",".","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","'",".","name","(","str",")",":","Policy","name",",","also","the","variable","scope","of","the","policy",".","hidden_sizes","(","list","[","int","]",")",":","Output","dimension","of","dense","layer","(","s",")",".","For","example",",","(","32",",","32",")","means","the","MLP","of","this","policy","consists","of","two","hidden","layers",",","each","with","32","hidden","units",".","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","."]
code: def __init__(
      self,
      env_spec,
      filters,
      strides,
      padding,
      name="CategoricalCNNPolicy",
      hidden_sizes=(32, 32),
      hidden_nonlinearity=tf.nn.relu,
      hidden_w_init=tf.initializers.glorot_uniform(
          seed=deterministic.get_tf_seed_stream()
      ),
      hidden_b_init=tf.zeros_initializer(),
      output_nonlinearity=tf.nn.softmax,
      output_w_init=tf.initializers.glorot_uniform(
          seed=deterministic.get_tf_seed_stream()
      ),
      output_b_init=tf.zeros_initializer(),
      layer_normalization=False,
  ):
      assert isinstance(env_spec.action_space, akro.Discrete), (
          "CategoricalCNNPolicy only works with akro.Discrete action "
          "space."
      )
      if isinstance(env_spec.observation_space, akro.Dict):
          raise ValueError(
              "CNN policies do not support"
              "with akro.Dict observation spaces."
          )
  
      self._env_spec = env_spec
      self._obs_dim = env_spec.observation_space.shape
      self._action_dim = env_spec.action_space.n
      self._filters = filters
      self._strides = strides
      self._padding = padding
      self._hidden_sizes = hidden_sizes
      self._hidden_nonlinearity = hidden_nonlinearity
      self._hidden_w_init = hidden_w_init
      self._hidden_b_init = hidden_b_init
      self._output_nonlinearity = output_nonlinearity
      self._output_w_init = output_w_init
      self._output_b_init = output_b_init
      self._layer_normalization = layer_normalization
  
      self._f_prob = None
  
      is_image = isinstance(self.env_spec.observation_space, akro.Image)
  
      super().__init__(
          input_dim=self._obs_dim,
          output_dim=self._action_dim,
          filters=filters,
          strides=strides,
          padding=padding,
          hidden_sizes=hidden_sizes,
          hidden_nonlinearity=hidden_nonlinearity,
          hidden_w_init=hidden_w_init,
          hidden_b_init=hidden_b_init,
          output_nonlinearity=output_nonlinearity,
          output_w_init=output_w_init,
          output_b_init=output_b_init,
          layer_normalization=layer_normalization,
          name=name,
          is_image=is_image,
      )
  
      self._initialize()
  
file_path: garage/src/garage/tf/policies/categorical_cnn_policy.py
imports: import akro
  import numpy
  import tensorflow
  from garage.experiment import deterministic
  from garage.tf.models import CategoricalCNNModel
  from garage.tf.policies.policy import Policy
label_desc: Use image node_id 1 to create a new CategoricalCNNPolicy object from inherited base classes: CategoricalCNNModel, Policy with example: obj = CategoricalCNNPolicy(env_spec, filters, strides, padding, name, hidden_sizes, hidden_nonlinearity, hidden_w_init, hidden_b_init, output_nonlinearity, output_w_init, output_b_init, layer_normalization)