class_docstr: Constructs a multivariate normal random variable, based on mean and covariance.
  Can be multivariate, or a batch of multivariate normals
  
  Passing a vector mean corresponds to a multivariate normal.
  Passing a matrix mean corresponds to a batch of multivariate normals.
  
  :param mean: `... x N` mean of mvn distribution.
  :param covariance_matrix: `... x N X N` covariance matrix of mvn distribution.
  :param validate_args: If True, validate `mean` anad `covariance_matrix` arguments. (Default: False.)
  
  :ivar torch.Size base_sample_shape: The shape of a base sample (without
      batching) that is used to generate a single sample.
  :ivar torch.Tensor covariance_matrix: The covariance matrix, represented as a dense :class:`torch.Tensor`
  :ivar ~linear_operator.LinearOperator lazy_covariance_matrix: The covariance matrix, represented
      as a :class:`~linear_operator.LinearOperator`.
  :ivar torch.Tensor mean: The mean.
  :ivar torch.Tensor stddev: The standard deviation.
  :ivar torch.Tensor variance: The variance.
code: def __init__(
      self,
      mean: Tensor,
      covariance_matrix: Union[Tensor, LinearOperator],
      validate_args: bool = False,
  ):
      self._islazy = isinstance(mean, LinearOperator) or isinstance(
          covariance_matrix, LinearOperator
      )
      if self._islazy:
          if validate_args:
              ms = mean.size(-1)
              cs1 = covariance_matrix.size(-1)
              cs2 = covariance_matrix.size(-2)
              if not (ms == cs1 and ms == cs2):
                  raise ValueError(
                      f"Wrong shapes in {self._repr_sizes(mean, covariance_matrix)}"
                  )
          self.loc = mean
          self._covar = covariance_matrix
          self.__unbroadcasted_scale_tril = None
          self._validate_args = validate_args
          batch_shape = torch.broadcast_shapes(
              self.loc.shape[:-1], covariance_matrix.shape[:-2]
          )
  
          event_shape = self.loc.shape[-1:]
  
          # TODO: Integrate argument validation for LinearOperators into torch.distribution validation logic
          super(TMultivariateNormal, self).__init__(
              batch_shape, event_shape, validate_args=False
          )
      else:
          super().__init__(
              loc=mean,
              covariance_matrix=covariance_matrix,
              validate_args=validate_args,
          )
  
imports: from __future__ import annotations
  import math
  import warnings
  from numbers import Number
  from typing import Optional, Tuple, Union
  import torch
  from linear_operator import to_dense, to_linear_operator
  from linear_operator.operators import DiagLinearOperator, LinearOperator, RootLinearOperator
  from torch import Tensor
  from torch.distributions import MultivariateNormal
  from torch.distributions.kl import register_kl
  from torch.distributions.utils import _standard_normal, lazy_property
  from ..None import settings
  from ..utils.warnings import NumericalWarning
  from .distribution import Distribution
label_desc: Use image node_id 1 to create a new MultivariateNormal object from inherited base classes: TMultivariateNormal, Distribution with example: obj = MultivariateNormal(mean, covariance_matrix, validate_args)