class_docstr: This implements the shape augmentation trick of
  Naesseth, Ruiz, Linderman, Blei (2017) https://arxiv.org/abs/1610.05683
code: def rsample(self, sample_shape=torch.Size()):
      x = self._rejection_gamma.rsample(sample_shape)
      boosted_x = x.clone()
      for i in range(self._boost):
          u = torch.rand(x.shape, dtype=x.dtype, device=x.device)
          boosted_x *= (1 - u) ** (1 / (i + self.concentration))
      self._unboost_x_cache = boosted_x, x
      return boosted_x
  
imports: import torch
  from pyro.distributions.rejector import Rejector
  from pyro.distributions.score_parts import ScoreParts
  from pyro.distributions.torch import Beta, Dirichlet, Gamma, Normal
  from pyro.distributions.util import copy_docs_from, weakmethod
label_desc: Use image node_id 3 for calling the ShapeAugmentedGamma obj's underlying member method code with example usage: obj.rsample(sample_shape) and returns: boosted_x