class_docstr: Multi Output Kernel class.
  
  This kernel can represent correlation between outputs of different datapoints.
  
  The `full_output_cov` argument holds whether the kernel should calculate
  the covariance between the outputs. In case there is no correlation but
  `full_output_cov` is set to True the covariance matrix will be filled with zeros
  until the appropriate size is reached.
class_docstr_tok: ["Multi","Output","Kernel","class",".","This","kernel","can","represent","correlation","between","outputs","of","different","datapoints",".","The","`","full_output_cov","`","argument","holds","whether","the","kernel","should","calculate","the","covariance","between","the","outputs",".","In","case","there","is","no","correlation","but","`","full_output_cov","`","is","set","to","True","the","covariance","matrix","will","be","filled","with","zeros","until","the","appropriate","size","is","reached","."]
code: def __call__(
      self,
      X: TensorType,
      X2: Optional[TensorType] = None,
      *,
      full_cov: bool = False,
      full_output_cov: bool = True,
      presliced: bool = False,
  ) -> tf.Tensor:
      if not presliced:
          X, X2 = self.slice(X, X2)
      if not full_cov and X2 is not None:
          raise ValueError(
              "Ambiguous inputs: passing in `X2` is not compatible with `full_cov=False`."
          )
      if not full_cov:
          return self.K_diag(X, full_output_cov=full_output_cov)
      return self.K(X, X2, full_output_cov=full_output_cov)
  
imports: import abc
  from typing import Optional, Sequence, Tuple
  import tensorflow
  from check_shapes import check_shape
  from check_shapes import check_shapes, inherit_check_shapes
  from ...base import Parameter, TensorType
  from ..base import Combination, Kernel
label_desc: Use image node_id 5 for calling the MultioutputKernel obj's underlying member method code with example usage: obj.__call__(X, X2) and returns: self, self