grad(z.sum(), [y])  # error because z is x
Derived classes should implement one or both of "_call()" or
   "_inverse()". Derived classes that set bijective=True should also
   implement "log_abs_det_jacobian()".
Parameters:
      cache_size (int) -- Size of cache. If zero, no caching is
      done. If one, the latest single value is cached. Only 0 and 1
      are supported.
Variables:
      * domain ("Constraint") -- The constraint representing valid
        inputs to this transform.
  * **codomain** ("Constraint") -- The constraint representing
    valid outputs to this transform which are inputs to the
    inverse transform.

  * **bijective** (*bool*) -- Whether this transform is bijective.
    A transform "t" is bijective iff "t.inv(t(x)) == x" and
    "t(t.inv(y)) == y" for every "x" in the domain and "y" in the
    codomain. Transforms that are not bijective should at least
    maintain the weaker pseudoinverse properties "t(t.inv(t(x)) ==
