class_docstr: Critic head that uses a categorical to represent action values.
class_docstr_tok: ["Critic","head","that","uses","a","categorical","to","represent","action","values","."]
code: def __init__(
      self,
      num_bins: int = 601,
      vmax: Optional[float] = None,
      vmin: Optional[float] = None,
      w_init: hk_init.Initializer = hk_init.VarianceScaling(1e-5),
  ):
      super().__init__(name="categorical_critic_head")
      vmax = vmax if vmax is not None else 0.5 * (num_bins - 1)
      vmin = vmin if vmin is not None else -1.0 * vmax
  
      self._head = DiscreteValuedTfpHead(
          vmin=vmin,
          vmax=vmax,
          logits_shape=(1,),
          num_atoms=num_bins,
          w_init=w_init,
      )
  
imports: from typing import Any, List, Optional, Sequence, Union, Callable
  import chex
  import haiku
  import jax
  import jax.numpy
  import numpy
  import tensorflow_probability
  import tensorflow_probability.substrates.jax
label_desc: Use image node_id 1 to create a new CategoricalCriticHead object from inherited base classes: hk with example: obj = CategoricalCriticHead(num_bins, vmax, vmin, w_init)