docstr: Builds a mixture of quantized logistic distributions.
  
  Parameters
  ----------
  component_logits
      4D `Tensor` of logits for the Categorical distribution
      over Quantized Logistic mixture components. Dimensions are `[batch_size,
      height, width, num_logistic_mix]`.
  locs
      4D `Tensor` of location parameters for the Quantized Logistic
      mixture components. Dimensions are `[batch_size, height, width,
      num_logistic_mix, num_channels]`.
  scales
      4D `Tensor` of location parameters for the Quantized Logistic
      mixture components. Dimensions are `[batch_size, height, width,
      num_logistic_mix, num_channels]`.
  return_per_feature
      If True, return per pixel level log prob.
  
  Returns
  -------
  dist
      A quantized logistic mixture `tfp.distribution` over the input data.
code: def _make_mixture_dist(
      self,
      component_logits,
      locs,
      scales,
      return_per_feature: bool = False,
  ):
      """Builds a mixture of quantized logistic distributions.
  
      Parameters
      ----------
      component_logits
          4D `Tensor` of logits for the Categorical distribution
          over Quantized Logistic mixture components. Dimensions are `[batch_size,
          height, width, num_logistic_mix]`.
      locs
          4D `Tensor` of location parameters for the Quantized Logistic
          mixture components. Dimensions are `[batch_size, height, width,
          num_logistic_mix, num_channels]`.
      scales
          4D `Tensor` of location parameters for the Quantized Logistic
          mixture components. Dimensions are `[batch_size, height, width,
          num_logistic_mix, num_channels]`.
      return_per_feature
          If True, return per pixel level log prob.
  
      Returns
      -------
      dist
          A quantized logistic mixture `tfp.distribution` over the input data.
      """
      mixture_distribution = categorical.Categorical(
          logits=component_logits
      )
  
      # Convert distribution parameters for pixel values in
      # `[self._low, self._high]` for use with `QuantizedDistribution`
      locs = self._low + 0.5 * (self._high - self._low) * (locs + 1.0)
      scales *= 0.5 * (self._high - self._low)
      logistic_dist = quantized_distribution.QuantizedDistribution(
          distribution=transformed_distribution.TransformedDistribution(
              distribution=logistic.Logistic(loc=locs, scale=scales),
              bijector=Shift(shift=tf.cast(-0.5, self.dtype)),
          ),
          low=self._low,
          high=self._high,
      )
  
      # mixture with logistics for the loc and scale on each pixel for each component
      dist = mixture_same_family.MixtureSameFamily(
          mixture_distribution=mixture_distribution,
          components_distribution=independent.Independent(
              logistic_dist, reinterpreted_batch_ndims=1
          ),
      )
      if return_per_feature:
          return dist
      else:
          return independent.Independent(
              dist, reinterpreted_batch_ndims=2
          )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import functools
  import numpy
  import warnings
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import bijector
  from tensorflow_probability.python.distributions import categorical
  from tensorflow_probability.python.distributions import distribution
  from tensorflow_probability.python.distributions import independent
  from tensorflow_probability.python.distributions import logistic
  from tensorflow_probability.python.distributions import mixture_same_family
  from tensorflow_probability.python.distributions import quantized_distribution
  from tensorflow_probability.python.distributions import transformed_distribution
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import reparameterization
  from tensorflow_probability.python.internal import tensor_util
  from tensorflow_probability.python.internal import tensorshape_util
label_desc: Use image node_id 2 for calling the PixelCNN obj's underlying member method code with example usage: obj._make_mixture_dist(component_logits, locs, scales, return_per_feature) and returns: dist, independent