class_docstr: Marginal distribution of a Multitask GP at finitely many points.
code: def _log_prob(self, value, index_points=None):
      # Check that observations with at least 2 dimensions have
      # shape that's broadcastable to `[N, T]`, where `N` is the number
      # of index points, and T the number of tasks.
      index_points = self._get_index_points(index_points)
      self._check_observations_valid(value, index_points)
  
      return self._get_flattened_marginal_distribution(
          index_points=index_points
      ).log_prob(_vec(value))
  
imports: import functools
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import cholesky_util
  from tensorflow_probability.python.distributions import distribution
  from tensorflow_probability.python.distributions import mvn_linear_operator
  from tensorflow_probability.python.distributions.internal import stochastic_process_util
  from tensorflow_probability.python.experimental.linalg import linear_operator_unitary
  from tensorflow_probability.python.experimental.psd_kernels import multitask_kernel
  from tensorflow_probability.python.internal import batch_shape_lib
  from tensorflow_probability.python.internal import distribution_util
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import nest_util
  from tensorflow_probability.python.internal import parameter_properties
  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
  from tensorflow.python.util import nest
label_desc: Use image node_id 15 for calling the MultiTaskGaussianProcess obj's underlying member method code with example usage: obj._log_prob(value, index_points) and returns: self