JuliaDiff / ReverseDiff.jl

Reverse Mode Automatic Differentiation for Julia
Other
348 stars 57 forks source link

ReverseDiff for derivatives of custom types? #194

Open ramos opened 2 years ago

ramos commented 2 years ago

Hi,

I need to evaluate the gradient of a function with my custom type/operations. For example if f(x) = x^3, I want the derivative obtained with the usual rules of calculus (i.e. df(x)=3*x^2), to be evaluated for typeof(x) = foo. Of course I have pre-defined the operations *(a::Number,b::foo) and ^(a::foo,n::Integer), etc...

I know that Zygote can easily do this, but it is about an order of magnitude slower than ReverseDiff for my problem and Real inputs, so I would rather prefer to use a compiled tape and ReverseDiff.

Thanks,

rejuvyesh commented 2 years ago

I don't think ReverseDiff is designed for that. Your best bet is to convert your type into an array.