class_docstr: Constructs a multi-output multivariate Normal random variable, based on mean and covariance
  Can be multi-output multivariate, or a batch of multi-output multivariate Normal
  
  Passing a matrix mean corresponds to a multi-output multivariate Normal
  Passing a matrix mean corresponds to a batch of multivariate Normals
  
  :param torch.Tensor mean:  An `n x t` or batch `b x n x t` matrix of means for the MVN distribution.
  :param ~linear_operator.operators.LinearOperator covar: An `... x NT x NT` (batch) matrix.
      covariance matrix of MVN distribution.
  :param bool validate_args: (default=False) If True, validate `mean` and `covariance_matrix` arguments.
  :param bool interleaved: (default=True) If True, covariance matrix is interpreted as block-diagonal w.r.t.
      inter-task covariances for each observation. If False, it is interpreted as block-diagonal
      w.r.t. inter-observation covariance for each task.
code: def rsample(self, sample_shape=torch.Size(), base_samples=None):
      if base_samples is not None:
          # Make sure that the base samples agree with the distribution
          mean_shape = self.mean.shape
          base_sample_shape = base_samples.shape[
              -self.mean.ndimension() :
          ]
          if mean_shape != base_sample_shape:
              raise RuntimeError(
                  "The shape of base_samples (minus sample shape dimensions) should agree with the shape "
                  "of self.mean. Expected ...{} but got {}".format(
                      mean_shape, base_sample_shape
                  )
              )
          sample_shape = base_samples.shape[: -self.mean.ndimension()]
          base_samples = base_samples.view(
              *sample_shape, *self.loc.shape
          )
  
      samples = super().rsample(
          sample_shape=sample_shape, base_samples=base_samples
      )
      if not self._interleaved:
          # flip shape of last two dimensions
          new_shape = (
              sample_shape
              + self._output_shape[:-2]
              + self._output_shape[:-3:-1]
          )
          return samples.view(new_shape).transpose(-1, -2).contiguous()
      return samples.view(sample_shape + self._output_shape)
  
imports: import torch
  from linear_operator import LinearOperator, to_linear_operator
  from linear_operator.operators import BlockDiagLinearOperator, BlockInterleavedLinearOperator, CatLinearOperator, DiagLinearOperator
  from .multivariate_normal import MultivariateNormal
label_desc: Use image node_id 12 for calling the MultitaskMultivariateNormal obj's underlying member method code with example usage: obj.rsample(sample_shape, base_samples) and returns: samples, samples