class_docstr: Abstract base class for Multi-Task Kernels.
  
  A `MultiTaskKernel` is defined as a positive-semidefinite kernel over tuples
  `(o, x) x (o', x')`, where `o` is an integer representing a "task" while
  `x` lies in some ambient space. Typically, `o` is from a finite set of
  integers `{1, ..., N}` where `N` represents the number of tasks. Another
  way to phrase this, is a `MultiTaskKernel` represents a finite collection
  of positive-semidefinite kernels one for each "task" in `{1, ..., N}`.
  
  `MultiTaskKernel` offers a public method `matrix_over_all_tasks`.
  
  `matrix_over_all_tasks` computes the value of the kernel *pairwise* on two
  batches of inputs, for every pair of tasks.
  
  An instance of this class is required to pass in `num_tasks` (which is `N`).
class_docstr_tok: ["Abstract","base","class","for","Multi-Task","Kernels",".","A","`","MultiTaskKernel","`","is","defined","as","a","positive-semidefinite","kernel","over","tuples","`","(","o",",","x",")","x","(","o","'",",","x","'",")","`",",","where","`","o","`","is","an","integer","representing","a","``","task","''","while","`","x","`","lies","in","some","ambient","space",".","Typically",",","`","o","`","is","from","a","finite","set","of","integers","`","{","1",",","...",",","N","}","`","where","`","N","`","represents","the","number","of","tasks",".","Another","way","to","phrase","this",",","is","a","`","MultiTaskKernel","`","represents","a","finite","collection","of","positive-semidefinite","kernels","one","for","each","``","task","''","in","`","{","1",",","...",",","N","}","`",".","`","MultiTaskKernel","`","offers","a","public","method","`","matrix_over_all_tasks","`",".","`","matrix_over_all_tasks","`","computes","the","value","of","the","kernel","*","pairwise","*","on","two","batches","of","inputs",",","for","every","pair","of","tasks",".","An","instance","of","this","class","is","required","to","pass","in","`","num_tasks","`","(","which","is","`","N","`",")","."]
code: def _matrix_over_all_tasks(self, x1, x2):
      raise NotImplementedError(
          "Subclasses must provide `_matrix_over_all_tasks` implementation."
      )
  
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 4 for calling the MultiTaskKernel obj's underlying member method code with example usage: obj._matrix_over_all_tasks(x1, x2) without return types