code: def __init__(
      self,
      agent_parameters: AgentParameters,
      spaces: SpacesDefinition,
      network_name: str,
      head_idx: int = 0,
      loss_weight: float = 1.0,
      is_local: bool = True,
      activation_function: str = "relu",
      dense_layer=Dense,
  ):
      super().__init__(
          agent_parameters,
          spaces,
          network_name,
          head_idx,
          loss_weight,
          is_local,
          activation_function,
          dense_layer=dense_layer,
      )
      self.num_actions = len(self.spaces.action.actions)
      self.num_atoms = agent_parameters.algorithm.atoms
      self.name = "rainbow_q_values_head"
      self.z_values = tf.cast(
          tf.constant(
              np.linspace(
                  self.ap.algorithm.v_min,
                  self.ap.algorithm.v_max,
                  self.ap.algorithm.atoms,
              ),
              dtype=tf.float32,
          ),
          dtype=tf.float64,
      )
      self.loss_type = []
  
file_path: coach/rl_coach/architectures/tensorflow_components/heads/rainbow_q_head.py
imports: import tensorflow
  import numpy
  from rl_coach.architectures.tensorflow_components.heads import QHead
  from rl_coach.architectures.tensorflow_components.layers import Dense
  from rl_coach.base_parameters import AgentParameters
  from rl_coach.spaces import SpacesDefinition
label_desc: Use image node_id 1 to create a new RainbowQHead object from inherited base classes: QHead with example: obj = RainbowQHead(agent_parameters, spaces, network_name, head_idx, loss_weight, is_local, activation_function, dense_layer)