Tracing adjoint gradient
zaqqwerty opened this issue · 3 comments
Some tf.function
wrapped functions that only have a single tape result in:
LookupError: No gradient defined for operation 'TfqAdjointGradient' (op type: TfqAdjointGradient)
One possible cause is mentioned at this link:
It should be noted
tf.GradientTape
is still watching the forward pass of atf.custom_gradient
, and will use the ops it watches. As a consequence, callingtf.function
while the tape is still watching leads to a gradient graph being built. If an op is used intf.function
without registered gradient, aLookupError
will be raised.
So solving this seems like it would involve removing tf.function
decoration from the library, leaving it up to users to decorate as desired.
Can you provide a minimal snippet that reproduces this issue ? It looks like this lookup is related to trying to get gradient info from the gradient op which could be caused by trying to do 2nd order or multi-tape things.