Tracker.jl
Tracker.jl copied to clipboard
Flux's ex AD
Used the wrong branch earlier, same commits though. cc @ChrisRackauckas @AStupidBear
Here I present the correct (but poor) implementation of BP for SVD, this implementation changes the original `svd` interfaces a bit, hoping someone can help improve it. ```julia using LinearAlgebra...
```julia julia> using Distances, Flux julia> pairwise(SqEuclidean(), param([1 2; 3 4]), dims = 2) ERROR: MethodError: no method matching Float64(::Tracker.TrackedReal{Float64}) Closest candidates are: Float64(::Real, ::RoundingMode) where T
Product of two Triangular matrix: ```julia using Tracker using LinearAlgebra X = randn(3, 3) function g1(x) y = UpperTriangular(x) sum(y * y) end Tracker.gradient(g1, X) ``` throw: ``` MethodError: Cannot...
It seems that the implementation of `∇broadcast` assumes that the arguments are not non-numeric tracked types. For example this fails: ```julia julia> using Tracker julia> f(x, y) = x.s *...
want a `TrackedComplex` type so that I can efficiently differentiate through `FFTW.fft` and also opens up the possibility of teaching `Tracker` complex analysis, contour integrals etc.
According to https://fluxml.ai/Flux.jl/stable/performance/#Don't-use-more-precision-than-you-need.-1 we should use as small types as possible. Implementing ``` param(xs::AbstractArray) = TrackedArray(float.(xs)) ``` seems somewhat counterintuitive as it tries to convert to Float64. Thus, if I...
Moving from https://github.com/FluxML/Flux.jl/pull/480
See https://github.com/FluxML/Tracker.jl/blob/master/src/lib/array.jl#L299 `AbstractArray` should be `AbstractVecOrMat` like other lines? Or it is intended?
Ther following use of `mapslices` tries to call a non-existing Array constructor: ```julia using Flux, CuArrays julia> Z = gpu(Conv((3,3), 1=>1))(gpu(randn(5,5,1,1))) Tracked 3×3×1×1 CuArray{Float32,4}: [:, :, 1, 1] = 1.85926...