".support" are propagated in an unconstrained space, and algorithms
are typically rotation invariant.:
dist = Exponential(rate)
   unconstrained = torch.zeros(100, requires_grad=True)
   sample = biject_to(dist.support)(unconstrained)
   potential_energy = -dist.log_prob(sample).sum()
Note:
An example where "transform_to" and "biject_to" differ is
  "constraints.simplex": "transform_to(constraints.simplex)" returns a
  "SoftmaxTransform" that simply exponentiates and normalizes its
  inputs; this is a cheap and mostly coordinate-wise operation
  appropriate for algorithms like SVI. In contrast,
  "biject_to(constraints.simplex)" returns a "StickBreakingTransform"
  that bijects its input down to a one-fewer-dimensional space; this a
  more expensive less numerically stable transform but is needed for
  algorithms like HMC.
The "biject_to" and "transform_to" objects can be extended by user-
defined constraints and transforms using their ".register()" method