class_docstr: Soft asymmetric version of the :class:`~pyro.distributions.Laplace`
  distribution.
  
  This has a smooth (infinitely differentiable) density with two asymmetric
  asymptotically exponential tails, one on the left and one on the right. In
  the limit of ``softness → 0``, this converges in distribution to the
  :class:`AsymmetricLaplace` distribution.
  
  This is equivalent to the sum of three random variables ``z - u + v`` where::
  
      z ~ Normal(loc, scale * softness)
      u ~ Exponential(1 / (scale * asymmetry))
      v ~ Exponential(asymetry / scale)
  
  This is also equivalent the sum of two random variables ``z + a`` where::
  
      z ~ Normal(loc, scale * softness)
      a ~ AsymmetricLaplace(0, scale, asymmetry)
  
  :param loc: Location parameter, i.e. the mode.
  :param scale: Scale parameter = geometric mean of left and right scales.
  :param asymmetry: Square of ratio of left to right scales. Defaults to 1.
  :param softness: Scale parameter of the Gaussian smoother. Defaults to 1.
class_docstr_tok: ["Soft","asymmetric","version","of","the",":","class",":","`","~pyro.distributions.Laplace","`","distribution",".","This","has","a","smooth","(","infinitely","differentiable",")","density","with","two","asymmetric","asymptotically","exponential","tails",",","one","on","the","left","and","one","on","the","right",".","In","the","limit","of","``","softness","\u2192","0","``",",","this","converges","in","distribution","to","the",":","class",":","`","AsymmetricLaplace","`","distribution",".","This","is","equivalent","to","the","sum","of","three","random","variables","``","z","-","u","+","v","``","where",":",":","z","~","Normal","(","loc",",","scale","*","softness",")","u","~","Exponential","(","1","\/","(","scale","*","asymmetry",")",")","v","~","Exponential","(","asymetry","\/","scale",")","This","is","also","equivalent","the","sum","of","two","random","variables","``","z","+","a","``","where",":",":","z","~","Normal","(","loc",",","scale","*","softness",")","a","~","AsymmetricLaplace","(","0",",","scale",",","asymmetry",")",":","param","loc",":","Location","parameter",",","i.e",".","the","mode",".",":","param","scale",":","Scale","parameter","=","geometric","mean","of","left","and","right","scales",".",":","param","asymmetry",":","Square","of","ratio","of","left","to","right","scales",".","Defaults","to","1.",":","param","softness",":","Scale","parameter","of","the","Gaussian","smoother",".","Defaults","to","1","."]
code: def expand(self, batch_shape, _instance=None):
      new = self._get_checked_instance(AsymmetricLaplace, _instance)
      batch_shape = torch.Size(batch_shape)
      new.loc = self.loc.expand(batch_shape)
      new.scale = self.scale.expand(batch_shape)
      new.asymmetry = self.asymmetry.expand(batch_shape)
      new.softness = self.softness.expand(batch_shape)
      super(AsymmetricLaplace, new).__init__(
          batch_shape, validate_args=False
      )
      new._validate_args = self._validate_args
      return new
  
imports: import math
  import torch
  from torch.distributions import constraints
  from torch.distributions.utils import broadcast_all, lazy_property
  from .torch_distribution import TorchDistribution
label_desc: Use image node_id 5 for calling the SoftAsymmetricLaplace obj's underlying member method code with example usage: obj.expand(batch_shape, _instance) and returns: new