logit is transformed via sigmoid to the first probability and the
   probability of everything else, and then the process recurses.
This is bijective and appropriate for use in HMC; however it mixes
   coordinates together and is less appropriate for optimization.
class torch.distributions.transforms.Transform(cache_size=0)
Abstract class for invertable transformations with computable log
   det jacobians. They are primarily used in
   "torch.distributions.TransformedDistribution".
Caching is useful for transforms whose inverses are either
   expensive or numerically unstable. Note that care must be taken
   with memoized values since the autograd graph may be reversed. For
   example while the following works with or without caching:
  y = t(x)
  t.log_abs_det_jacobian(x, y).backward()  # x will receive gradients.

However the following will error when caching due to dependency
   reversal:
  y = t(x)
  z = t.inv(y)
  grad(z.sum(), [y])  # error because z is x
