class_docstr: Creates a categorical Q-network.
  
  It can be used to take an input of batched observations and outputs
  ([batch_size, num_actions, num_atoms], network's state).
  
  The first element of the output is a batch of logits based on the distribution
  called C51 from Bellemare et al., 2017 (https://arxiv.org/abs/1707.06887). The
  logits are used to compute approximate probability distributions for Q-values
  for each potential action, by computing the probabilities at the 51 points
  (called atoms) in np.linspace(-10.0, 10.0, 51).
class_docstr_tok: ["Creates","a","categorical","Q-network",".","It","can","be","used","to","take","an","input","of","batched","observations","and","outputs","(","[","batch_size",",","num_actions",",","num_atoms","]",",","network","'s","state",")",".","The","first","element","of","the","output","is","a","batch","of","logits","based","on","the","distribution","called","C51","from","Bellemare","et","al.",",","2017","(","https",":","\/\/arxiv.org\/abs\/1707.06887",")",".","The","logits","are","used","to","compute","approximate","probability","distributions","for","Q-values","for","each","potential","action",",","by","computing","the","probabilities","at","the","51","points","(","called","atoms",")","in","np.linspace","(","-10.0",",","10.0",",","51",")","."]
docstr: Runs the given observation through the network.
  
  Args:
    observation: The observation to provide to the network.
    step_type: The step type for the given observation. See `StepType` in
      time_step.py.
    network_state: A state tuple to pass to the network, mainly used by RNNs.
    training: Whether the output will be used for training.
  
  Returns:
    A tuple `(logits, network_state)`.
docstr_tok: ["Runs","the","given","observation","through","the","network",".","Args",":","observation",":","The","observation","to","provide","to","the","network",".","step_type",":","The","step","type","for","the","given","observation",".","See","`","StepType","`","in","time_step.py",".","network_state",":","A","state","tuple","to","pass","to","the","network",",","mainly","used","by","RNNs",".","training",":","Whether","the","output","will","be","used","for","training",".","Returns",":","A","tuple","`","(","logits",",","network_state",")","`","."]
code: def call(
      self,
      observation,
      step_type=None,
      network_state=(),
      training=False,
  ):
      """Runs the given observation through the network.
  
      Args:
        observation: The observation to provide to the network.
        step_type: The step type for the given observation. See `StepType` in
          time_step.py.
        network_state: A state tuple to pass to the network, mainly used by RNNs.
        training: Whether the output will be used for training.
  
      Returns:
        A tuple `(logits, network_state)`.
      """
      logits, network_state = self._q_network(
          observation, step_type, network_state, training=training
      )
      logits = tf.reshape(
          logits, [-1, self._num_actions, self._num_atoms]
      )
      return logits, network_state
  
file_path: agents/tf_agents/networks/categorical_q_network.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import gin
  import tensorflow
  from tf_agents.networks import network
  from tf_agents.networks import q_network
  from tf_agents.specs import tensor_spec
label_desc: Use image node_id 3 for calling the CategoricalQNetwork obj's underlying member method code with example usage: obj.call(observation, step_type, network_state, training) and returns: logits,  network_state