class_docstr: Represents a multi-task kernel whose kernel can be separated as a product.
class_docstr_tok: ["Represents","a","multi-task","kernel","whose","kernel","can","be","separated","as","a","product","."]
code: def _matrix_over_all_tasks(self, x1, x2):
      # Because the kernel computations are independent of task,
      # we can use a Kronecker product of an identity matrix.
      task_linop = self.task_kernel_matrix_linop
      if self.task_kernel_scale_linop is not None:
          task_linop = (
              self._task_kernel_scale_linop
              @ self._task_kernel_scale_linop.adjoint()
          )
      base_kernel_matrix = tf.linalg.LinearOperatorFullMatrix(
          self.base_kernel.matrix(x1, x2)
      )
      return tf.linalg.LinearOperatorKronecker(
          [base_kernel_matrix, task_linop]
      )
  
imports: import tensorflow.compat.v2
  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 tensor_util
  from tensorflow_probability.python.math.psd_kernels import positive_semidefinite_kernel
label_desc: Use image node_id 6 for calling the Separable obj's underlying member method code with example usage: obj._matrix_over_all_tasks(x1, x2) and returns: tf