You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It seems that the implementation of ∇broadcast assumes that the arguments are not non-numeric tracked types. For example this fails:
julia>using Tracker
julia>f(x, y) = x.s * y; Tracker.gradient(x ->sum(f.([(s = x[1],)], x)), [1.0])
ERROR: MethodError:*(::Tracker.TrackedReal{Float64}, ::ForwardDiff.Dual{Nothing,Float64,1}) is ambiguous. Candidates:*(x::Real, y::ForwardDiff.Dual{Ty,V,N}where N where V) where Ty in ForwardDiff at C:\Users\user\.julia\packages\ForwardDiff\vt5F1\src\dual.jl:140*(a::Tracker.TrackedReal, b::Real) in Tracker at C:\Users\user\.julia\dev\Tracker\src\lib\real.jl:94
Possible fix, define
*(::Tracker.TrackedReal, ::ForwardDiff.Dual{Ty,V,N}where N where V)
Stacktrace:
[1] f(::NamedTuple{(:s,),Tuple{Tracker.TrackedReal{Float64}}}, ::ForwardDiff.Dual{Nothing,Float64,1}) at .\REPL[4]:1
[2] partial(::typeof(f), ::Tracker.TrackedReal{Float64}, ::Int64, ::NamedTuple{(:s,),Tuple{Tracker.TrackedReal{Float64}}}, ::Float64) at C:\Users\user\.julia\dev\Tracker\src\lib\array.jl:505
[3] _broadcast_getindex_evalf at .\broadcast.jl:630 [inlined]
[4] _broadcast_getindex at .\broadcast.jl:603 [inlined]
[5] getindex at .\broadcast.jl:563 [inlined]
[6] copy at .\broadcast.jl:853 [inlined]
[7] materialize(::Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Tracker.partial),Tuple{Base.RefValue{typeof(f)},Array{Tracker.TrackedReal{Float64},1},Int64,Array{NamedTuple{(:s,),Tuple{Tracker.TrackedReal{Float64}}},1},Array{Float64,1}}}) at .\broadcast.jl:819
[8] broadcast(::typeof(Tracker.partial), ::Base.RefValue{typeof(f)}, ::Array{Tracker.TrackedReal{Float64},1}, ::Int64, ::Vararg{Any,N}where N) at .\broadcast.jl:757
[9] ∇broadcast at C:\Users\user\.julia\dev\Tracker\src\lib\array.jl:509 [inlined]
[10] copy at C:\Users\user\.julia\dev\Tracker\src\lib\array.jl:540 [inlined]
[11] materialize at .\broadcast.jl:819 [inlined]
[12] #549 at C:\Users\user\.julia\dev\Tracker\src\lib\array.jl:513 [inlined]
[13] ntuple at .\ntuple.jl:42 [inlined]
[14] back at C:\Users\user\.julia\dev\Tracker\src\lib\array.jl:513 [inlined]
[15] back_(::Tracker.Call{Tracker.var"#back#550"{2,typeof(f),Tuple{Array{NamedTuple{(:s,),Tuple{Tracker.TrackedReal{Float64}}},1},TrackedArray{…,Array{Float64,1}}}},Tuple{Nothing,Tracker.Tracked{Array{Float64,1}}}}, ::Array{Tracker.TrackedReal{Float64},1}, ::Bool) at C:\Users\user\.julia\dev\Tracker\src\back.jl:35
[16] back(::Tracker.Tracked{Array{Tracker.TrackedReal{Float64},1}}, ::Array{Tracker.TrackedReal{Float64},1}, ::Bool) at C:\Users\user\.julia\dev\Tracker\src\back.jl:58
[17] foreach at C:\Users\user\.julia\dev\Tracker\src\back.jl:38 [inlined]
[18] back_(::Tracker.Call{Tracker.var"#484#485"{TrackedArray{…,Array{Tracker.TrackedReal{Float64},1}}},Tuple{Tracker.Tracked{Array{Tracker.TrackedReal{Float64},1}}}}, ::Tracker.TrackedReal{Float64}, ::Bool) at C:\Users\user\.julia\dev\Tracker\src\back.jl:38
[19] back(::Tracker.Tracked{Tracker.TrackedReal{Float64}}, ::Int64, ::Bool) at C:\Users\user\.julia\dev\Tracker\src\back.jl:58
[20] #back!#15 at C:\Users\user\.julia\dev\Tracker\src\back.jl:77 [inlined]
[21] #back! at .\none:0 [inlined]
[22] #back!#32 at C:\Users\user\.julia\dev\Tracker\src\lib\real.jl:16 [inlined]
[23] back!(::Tracker.TrackedReal{Tracker.TrackedReal{Float64}}) at C:\Users\user\.julia\dev\Tracker\src\lib\real.jl:14
[24] gradient_(::Function, ::Array{Float64,1}) at C:\Users\user\.julia\dev\Tracker\src\back.jl:4
[25] #gradient#24 at C:\Users\user\.julia\dev\Tracker\src\back.jl:164 [inlined]
[26] gradient(::Function, ::Array{Float64,1}) at C:\Users\user\.julia\dev\Tracker\src\back.jl:164
[27] top-level scope at REPL[4]:1
Any tips on how to fix this?
The text was updated successfully, but these errors were encountered:
It seems that the implementation of
∇broadcast
assumes that the arguments are not non-numeric tracked types. For example this fails:Any tips on how to fix this?
The text was updated successfully, but these errors were encountered: