class_docstr: - Separate: we use different kernel for each output latent
  - Independent: Latents are uncorrelated a priori.
code: def __init__(
      self, kernels: Sequence[Kernel], name: Optional[str] = None
  ) -> None:
      super().__init__(kernels=kernels, name=name)
  
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 1 to create a new SeparateIndependent object from inherited base classes: MultioutputKernel, Combination with example: obj = SeparateIndependent(kernels, name)