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 variance(self) -> Tensor:
      if self.islazy:
          # overwrite this since torch MVN uses unbroadcasted_scale_tril for this
          diag = self.lazy_covariance_matrix.diagonal(dim1=-1, dim2=-2)
          diag = diag.view(diag.shape[:-1] + self._event_shape)
          variance = diag.expand(self._batch_shape + self._event_shape)
      else:
          variance = super().variance
  
      # Check to make sure that variance isn't lower than minimum allowed value (default 1e-6).
      # This ensures that all variances are positive
      min_variance = settings.min_variance.value(variance.dtype)
      if variance.lt(min_variance).any():
          warnings.warn(
              f"Negative variance values detected. "
              "This is likely due to numerical instabilities. "
              f"Rounding negative variances up to {min_variance}.",
              NumericalWarning,
          )
          variance = variance.clamp_min(min_variance)
      return variance
  
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 18 for calling the MultivariateNormal obj's underlying member method code with example usage: obj.variance() and returns: variance