Seth Axen
Seth Axen
Yota is ChainRules-compatible, so it should be covered with the others.
Will do! Should I start with the public API? @frankschae said you had mentioned we might want to use some internal functions (he pointed me to https://github.com/wsmoses/Enzyme.jl/blob/2ce81ffa8f56c5bf44a4d85234c2110fa9d6eb0a/src/compiler.jl#L1745)
> I would like to add a "batch" version of Zygote as a backend which falls back on Zygote except for `jacobian` where the pullback is called with all the...
I think it would be good to support this. As you say, this would require support for caching. See #41.
Agreed. One complication here is that the end user may construct a backend to pass to some package with no knowledge of which sequence of AD functions are being called...
> It seems annoying that the pushforward and pullback function accept tuples of co-tangents instead of multiple arguments. Is there a compelling reason for doing so or was this a...
I think in general AD.jl has a funny relationship with inputs and outputs. Like `gradient` for a single input returns a tuple, and `hessian` *only* supports single inputs and yet...
Wouldn't it be more natural to make `pushforward_function` and `pullback_function` the primitives?
Certainly, though the tests need a few refactors first to make testing these cases more straightforward. Some changes made in #27. More will be necessary.
Also, this PR should use [RealDot.jl](https://github.com/JuliaMath/RealDot.jl) now that it exists.