Kyle Daruwalla
Kyle Daruwalla
An even simpler MWE: ```julia julia> f(x, xs...) = getindex.(x, xs...) f (generic function with 1 method) julia> Ghost.trace(f, X, 1)[2] Tape{Dict{Any, Any}} inp %1::typeof(f) inp %2::Matrix{Float64} inp %3::Int64 %4...
After looking into how to fix this, it seems like an issue when the top-level function being called has a `Vararg` signature. Since `Ghost.trace(f, args...)` already uses splatting, we would...
In my case, I managed to avoid the `Vararg`. But my package that uses Ghost is supposed to support any user defined function. So eventual support for `Vararg` would be...
When you take the gradient of a function call, Zygote will recursively enter each function in the call stack until it encounters a primitive function that it knows how to...
Just in case it wasn't clear before, you can use Zygote with CUDA without manually defining `rrule`s. But you need to use [the array programming](https://cuda.juliagpu.org/stable/usage/array/) interface instead of the kernel...
(never mind, the thing I was missing is scribbling the wrong variables on my napkin)
They make sense, but that doesn't make them right/useful. I tried creating similar problems with explicit params yesterday, and I just could not find an example that didn't work. So...
I think this illustrates why I consider explicit params better. It's obvious why the last example returned `nothing`. For the same reason, the `Adjoint` case returns nothing, but it is...
For example, something like https://github.com/FluxML/Flux.jl/issues/1592 works out nicely. Similar to the examples above, if we have ```julia m1 = Dense(5, 2) m2 = Dense(transpose(m1.weight)) m = Chain(m1, m2) dm =...
> I'm not precisely sure why this doesn't work today Is it because `_project` is only defined for `Numeric`?