-
Notifications
You must be signed in to change notification settings - Fork 57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
@grad_from_chainrules macro fails when using multi-output functions #221
Comments
Forgot to post the error message:
|
+1 --- I've run into the same problem and my MWE is almost identical to the one above. For me this is a huge problem, because I am hoping to use RevDiff over Zygote to get second derivatives. But when you implement a pullback of a pullback then you will typically have multiple outputs to take care of. If anybody can suggest how to fix this or work around it, I'd be very grateful. CC @tjjarvinen |
`@grad_from_chainrules` can't handle multi-output functions, see JuliaDiff/ReverseDiff.jl#221. In this case it can AD through the primal just fine.
* Rename VecCholeskyBijector to VecCorrCholeskyBijector * Compute corr logdetjac during transform * Enforce one-based indexing * Add with_logabsdet_jacobian for correlation transforms * Add rrule for non-mutating ADs * Update ChainRules to use manual rrule * Update Tracker to use manual rrule * Remove rrule for ReverseDiff `@grad_from_chainrules` can't handle multi-output functions, see JuliaDiff/ReverseDiff.jl#221. In this case it can AD through the primal just fine. * Add module * Make CorrBijector more numerically stable Also use consistent notation with inverse transform * Increment patch number * Revert "Rename VecCholeskyBijector to VecCorrCholeskyBijector" This reverts commit bd6ff3d. * Update src/bijectors/corr.jl Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Tor Erlend Fjelde <[email protected]> * Apply suggestions from code review * Work around issues with Tracker * import `stack` from Compat.jl (#314) * import `stack` in tests too * disable certain tests for ProductBijector on Julia versions with older `eachslice` impls --------- Co-authored-by: Tor Erlend Fjelde <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Dear team,
first: Thanks for developing this nice package :-)
I think there is an error with the macro
@grad_from_chainrules
when using it on multi-output functions (for example a function that outputs a tuple of two vectors). Note, that gradient/jacobian determination is not part of the current Github-tests, only therrule
s are evaluated directly, but no gradient/jacobian is built for testing ReverseDiff with the correspondingrrule
. However this works fine for single-output functions together withReverseDiff.gradient
.See the following MWE:
Tested in Julia 1.8.5, all used libraries up-to-date.
Thanks in advance & best regards!
The text was updated successfully, but these errors were encountered: