class_docstr: Multivariate Gaussian distribution, specified by the mean vector
  and the Cholesky factor of its covariance matrix.
  
  Parameters
  ----------
  mu
      mean vector, of shape (..., d)
  L
      Lower triangular Cholesky factor of covariance matrix, of shape
      (..., d, d)
  F
      A module that can either refer to the Symbol API or the NDArray
      API in MXNet
code: def log_prob(self, x: Tensor) -> Tensor:
      # todo add an option to compute loss on diagonal covariance only tosave
      # time
      F = self.F
  
      # remark we compute d from the tensor but we could ask it to the user
      # alternatively
      d = F.ones_like(self.mu).sum(axis=-1).max()
  
      residual = (x - self.mu).expand_dims(axis=-1)
  
      # L^{-1} * (x - mu)
      L_inv_times_residual = F.linalg_trsm(self.L, residual)
  
      ll = (
          F.broadcast_sub(
              -d / 2 * math.log(2 * math.pi),
              F.linalg_sumlogdiag(self.L),
          )
          - 1
          / 2
          * F.linalg_syrk(
              L_inv_times_residual, transpose=True
          ).squeeze()
      )
  
      return ll
  
imports: import math
  from typing import Optional, Tuple
  import numpy
  from gluonts.core.component import validated
  from gluonts.mx import Tensor
  from gluonts.mx.linalg_util import lower_triangular_ones
  from .distribution import Distribution, _sample_multiple, getF
  from .distribution_output import DistributionOutput
label_desc: Use image node_id 7 for calling the MultivariateGaussian obj's underlying member method code with example usage: obj.log_prob(x) and returns: ll