class_docstr: Multivariate normal (Gaussian) distribution with transport equation inspired control
  variates (adaptive velocity fields).
  
  A distribution over vectors in which all the elements have a joint Gaussian density.
  
  :param torch.Tensor loc: D-dimensional mean vector.
  :param torch.Tensor scale_tril: Cholesky of Covariance matrix; D x D matrix.
  :param torch.Tensor control_var: 2 x L x D tensor that parameterizes the control variate;
      L is an arbitrary positive integer.  This parameter needs to be learned (i.e. adapted) to
      achieve lower variance gradients. In a typical use case this parameter will be adapted
      concurrently with the `loc` and `scale_tril` that define the distribution.
  
  
  Example usage::
  
      control_var = torch.tensor(0.1 * torch.ones(2, 1, D), requires_grad=True)
      opt_cv = torch.optim.Adam([control_var], lr=0.1, betas=(0.5, 0.999))
  
      for _ in range(1000):
          d = AVFMultivariateNormal(loc, scale_tril, control_var)
          z = d.rsample()
          cost = torch.pow(z, 2.0).sum()
          cost.backward()
          opt_cv.step()
          opt_cv.zero_grad()
code: def rsample(self, sample_shape=torch.Size()):
      return _AVFMVNSample.apply(
          self.loc,
          self.scale_tril,
          self.control_var,
          sample_shape + self.loc.shape,
      )
  
file_path: pyro/pyro/distributions/avf_mvn.py
imports: import torch
  from torch.autograd import Function
  from torch.autograd.function import once_differentiable
  from torch.distributions import constraints
  from pyro.distributions.torch import MultivariateNormal
  from pyro.distributions.util import sum_leftmost
label_desc: Use image node_id 2 for calling the AVFMultivariateNormal obj's underlying member method code with example usage: obj.rsample(sample_shape) and returns: _AVFMVNSample