class_docstr: Creates a multivariate Student's t-distribution parameterized by degree of
  freedom :attr:`df`, mean :attr:`loc` and scale :attr:`scale_tril`.
  
  :param ~torch.Tensor df: degrees of freedom
  :param ~torch.Tensor loc: mean of the distribution
  :param ~torch.Tensor scale_tril: scale of the distribution, which is
      a lower triangular matrix with positive diagonal entries
class_docstr_tok: ["Creates","a","multivariate","Student","'s","t-distribution","parameterized","by","degree","of","freedom",":","attr",":","`","df","`",",","mean",":","attr",":","`","loc","`","and","scale",":","attr",":","`","scale_tril","`",".",":","param","~torch.Tensor","df",":","degrees","of","freedom",":","param","~torch.Tensor","loc",":","mean","of","the","distribution",":","param","~torch.Tensor","scale_tril",":","scale","of","the","distribution",",","which","is","a","lower","triangular","matrix","with","positive","diagonal","entries"]
code: def log_prob(self, value):
      if self._validate_args:
          self._validate_sample(value)
      n = self.loc.size(-1)
      y = torch.linalg.solve_triangular(
          self.scale_tril, (value - self.loc).unsqueeze(-1), upper=False
      ).squeeze(-1)
      Z = (
          self.scale_tril.diagonal(dim1=-2, dim2=-1).log().sum(-1)
          + 0.5 * n * self.df.log()
          + 0.5 * n * math.log(math.pi)
          + torch.lgamma(0.5 * self.df)
          - torch.lgamma(0.5 * (self.df + n))
      )
      return (
          -0.5 * (self.df + n) * torch.log1p(y.pow(2).sum(-1) / self.df)
          - Z
      )
  
file_path: pyro/pyro/distributions/multivariate_studentt.py
imports: import math
  import torch
  from torch.distributions import constraints
  from torch.distributions.utils import lazy_property
  from pyro.distributions.torch import Chi2
  from pyro.distributions.torch_distribution import TorchDistribution
  from pyro.distributions.util import broadcast_shape
label_desc: Use image node_id 8 for calling the MultivariateStudentT obj's underlying member method code with example usage: obj.log_prob(value) and returns: unknown