An eager-compatible version of recompute_grad.
For f(args, *kwargs), this supports gradients with respect to args, or to gradients with respect to any variables residing in the kwarg 'variables'. Note that for keras layer and model objects, this is handled automatically.
f was originally a tf.keras Model or Layer object,
g will not
be able to access the member variables of that object, because
through the wrapper function
inner. When recomputing gradients through
objects that inherit from keras, we suggest keeping a reference to the
underlying object around for the purpose of accessing these variables.
f(*x)that returns a
Tensoror sequence of
g that wraps
f, but which recomputes
f on the backwards
pass of a gradient call.