class_docstr: Represents a parameterized discrete valued distribution.
  
  The returned distribution is essentially a `tfd.Categorical`, but one which
  knows its support and so can compute the mean value.
code: def __call__(self, inputs: tf.Tensor) -> tfd.Distribution:
      logits = self._distributional_layer(inputs)
      logits = tf.reshape(
          logits,
          tf.concat(
              [
                  tf.shape(logits)[:1],  # batch size
                  tf.shape(self._values),
              ],
              axis=0,
          ),
      )
      values = tf.cast(self._values, logits.dtype)
  
      return ad.DiscreteValuedDistribution(values=values, logits=logits)
  
imports: import types
  from typing import Optional, Union
  from absl import logging
  from acme.tf.networks import distributions
  import numpy
  import sonnet
  import tensorflow
  import tensorflow_probability
label_desc: Use image node_id 2 for calling the DiscreteValuedHead obj's underlying member method code with example usage: obj.__call__(inputs) and returns: ad