An example for the usage of "TransformedDistribution" would be:
  # Building a Logistic Distribution
  # X ~ Uniform(0, 1)
  # f = a + b * logit(X)
  # Y ~ f(X) ~ Logistic(a, b)
  base_distribution = Uniform(0, 1)
  transforms = [SigmoidTransform().inv, AffineTransform(loc=a, scale=b)]
  logistic = TransformedDistribution(base_distribution, transforms)

For more examples, please look at the implementations of "Gumbel",
   "HalfCauchy", "HalfNormal", "LogNormal", "Pareto", "Weibull",
   "RelaxedBernoulli" and "RelaxedOneHotCategorical"
arg_constraints: Dict[str, Constraint] = {}
cdf(value)
  Computes the cumulative distribution function by inverting the
  transform(s) and computing the score of the base distribution.

expand(batch_shape, _instance=None)
property has_rsample
icdf(value)
  Computes the inverse cumulative distribution function using
  transform(s) and computing the score of the base distribution.

log_prob(value)