class_docstr: Spherical von Mises distribution.
  
  This implementation combines the direction parameter and concentration
  parameter into a single combined parameter that contains both direction and
  magnitude. The ``value`` arg is represented in cartesian coordinates: it
  must be a normalized 3-vector that lies on the 2-sphere.
  
  See :class:`~pyro.distributions.VonMises` for a 2D polar coordinate cousin
  of this distribution. See :class:`~pyro.distributions.projected_normal` for
  a qualitatively similar distribution but implementing more functionality.
  
  Currently only :meth:`log_prob` is implemented.
  
  :param torch.Tensor concentration: A combined location-and-concentration
      vector. The direction of this vector is the location, and its
      magnitude is the concentration.
code: def log_prob(self, value):
      if self._validate_args:
          if value.dim() < 1 or value.shape[-1] != 3:
              raise ValueError(
                  "Expected value to have rightmost dim 3, actual shape = {}".format(
                      value.shape
                  )
              )
          if not (torch.abs(value.norm(2, -1) - 1) < 1e-6).all():
              raise ValueError("direction vectors are not normalized")
      scale = self.concentration.norm(2, -1)
      log_normalizer = (
          scale.log() - scale.sinh().log() - math.log(4 * math.pi)
      )
      return (self.concentration * value).sum(-1) + log_normalizer
  
file_path: pyro/pyro/distributions/von_mises_3d.py
imports: import math
  import torch
  from .None import constraints
  from .torch_distribution import TorchDistribution
label_desc: Use image node_id 2 for calling the VonMises3D obj's underlying member method code with example usage: obj.log_prob(value) and returns: unknown