When calling NNlib.logsoftmax!(out_array, in_array)
where in_array
is a TrackedArray
and out_array
is zeros(size(in_array))
I get the following Error Message Error thrown in threaded loop on thread 0: ErrorException("Can't differentiate `setindex!`")
. Furthermore, it then throws a MethodError
and begins printing out arrays after arrays after arrays:
Error thrown in threaded loop on thread 0: MethodError(f=Float64, args=(Flux.Tracker.TrackedReal{Float64}(data=-1.85569, tracker=Flux.Tracker.Tracked{Float64}(ref=0x00000000, f=Flux.Tracker.Call{getfield(Flux.Tracker, Symbol("##310#313")), Tuple{Flux.Tracker.Tracked{Float64}, Flux.Tracker.Tracked{Float64}}}(func=getfield(Flux.Tracker, Symbol("##310#313"))(), args=(Flux.Tracker.Tracked{Float64}(ref=0x00000000, f=Flux.Tracker.Call{getfield(Flux.Tracker, Symbol("##310#313")), Tuple{Flux.Tracker.Tracked{Float64}, Flux.Tracker.Tracked{Float64}}}(func=getfield(Flux.Tracker, Symbol("##310#313"))(), args=(Flux.Tracker.Tracked{Float64}(ref=0x00000000, f=Flux.Tracker.Call{getfield(Flux.Tracker, Symbol("##334#336")){Flux.Tracker.TrackedArray{Float64, 2, Array{Float64, 2}}, Tuple{Int64, Int64}}, Tuple{Flux.Tracker.Tracked{Array{Float64, 2}}, Nothing, Nothing}}(func=getfield(Flux.Tracker, Symbol("##334#336")){Flux.Tracker.TrackedArray{Float64, 2, Array{Float64, 2}}, Tuple{Int64, Int64}}(xs=Flux.Tracker.TrackedArray{Float64, 2, Array{Float64, 2}}(tracker=Flux.Tracker.Tracked{Array{Float64, 2}}(ref=0x00000000, f=Flux.Tracker.Call{getfield(Flux.Tracker, Symbol("#back#451")){2, getfield(Base.Broadcast, Symbol("##26#28")){getfield(Base.Broadcast, Symbol("##27#29")){typeof(Base.:(+)), getfield(Base.Broadcast, Symbol("##9#10")){getfield(Base.Broadcast, Symbol("##9#10")){getfield(Base.Broadcast, Symbol("##11#12"))}}, getfield(Base.Broadcast, Symbol("##13#14")){getfield(Base.Broadcast, Symbol("##13#14")){getfield(Base.Broadcast, Symbol("##15#16"))}}, getfield(Base.Broadcast, Symbol("##5#6")){getfield(Base.Broadcast, Symbol("##5#6")){getfield(Base.Broadcast, Symbol("##3#4"))}}}, typeof(Base.tanh)}, Tuple{Flux.Tracker.TrackedArray{Float64, 2, Array{Float64, 2}}, Flux.Tracker.TrackedArray{Float64, 1, Array{Float64, 1}}}}, Tuple{Flux.Tracker.Tracked{Array{Float64, 2}}, Flux.Tracker.Tracked{Array{Float64, 1}}}}(func=getfield(Flux.Tracker, Symbol("#back#451")){2, getfield(Base.Broadcast, Symbol("##26#28")){getfield(Base.Broadcast, Symbol("##27#29")){typeof(Base.:(+)), getfield(Base.Broadcast, Symbol("##9#10")){getfield(Base.Broadcast, Symbol("##9#10")){getfield(Base.Broadcast, Symbol("##11#12"))}}, getfield(Base.Broadcast, Symbol("##13#14")){getfield(Base.Broadcast, Symbol("##13#14")){getfield(Base.Broadcast, Symbol("##15#16"))}}, getfield(Base.Broadcast, Symbol("##5#6")){getfield(Base.Broadcast, Symbol("##5#6")){getfield(Base.Broadcast, Symbol("##3#4"))}}}, typeof(Base.tanh)}, Tuple{Flux.Tracker.TrackedArray{Float64, 2, Array{Float64, 2}}, Flux.Tracker.TrackedArray{Float64, 1, Array{Float64, 1}}}}(f=getfield(Base.Broadcast, Symbol("##26#28")){getfield(Base.Broadcast, Symbol("##27#29")){typeof(Base.:(+)), getfield(Base.Broadcast, Symbol("##9#10")){getfield(Base.Broadcast, Symbol("##9#10")){getfield(Base.Broadcast, Symbol("##11#12"))}}, getfield(Base.Broadcast, Symbol("##13#14")){getfield(Base.Broadcast, Symbol("##13#14")){getfield(Base.Broadcast, Symbol("##15#16"))}}, getfield(Base.Broadcast, Symbol("##5#6")){getfield(Base.Broadcast, Symbol("##5#6")){getfield(Base.Broadcast, Symbol("##3#4"))}}}, typeof(Base.tanh)}(makeargs=getfield(Base.Broadcast, Symbol("##27#29")){typeof(Base.:(+)), getfield(Base.Broadcast, Symbol("##9#10")){getfield(Base.Broadcast, Symbol("##9#10")){getfield(Base.Broadcast, Symbol("##11#12"))}}, getfield(Base.Broadcast, Symbol("##13#14")){getfield(Base.Broadcast, Symbol("##13#14")){getfield(Base.Broadcast, Symbol("##15#16"))}}, getfield(Base.Broadcast, Symbol("##5#6")){getfield(Base.Broadcast, Symbol("##5#6")){getfield(Base.Broadcast, Symbol("##3#4"))}}}(f=typeof(Base.:(+))(), headargs=getfield(Base.Broadcast, Symbol("##9#10")){getfield(Base.Broadcast, Symbol("##9#10")){getfield(Base.Broadcast, Symbol("##11#12"))}}(headargs=getfield(Base.Broadcast, Symbol("##9#10")){getfield(Base.Broadcast, Symbol("##11#12"))}(headargs=getfield(Base.Broadcast, Symbol("##11#12"))())), tailargs=getfield(Base.Broadcast, Symbol("##13#14")){getfield(Base.Broadcast, Symbol("##13#14")){getfield(Base.Broadcast, Symbol("##15#16"))}}(tailargs=getfield(Base.Broadcast, Symbol("##13#14")){getfield(Base.Broadcast, Symbol("##15#16"))}(tailargs=getfield(Base.Broadcast, Symbol("##15#16"))())), #3#makeargs=getfield(Base.Broadcast, Symbol("##5#6")){getfield(Base.Broadcast, Symbol("##5#6")){getfield(Base.Broadcast, Symbol("##3#4"))}}(#641#makeargs=getfield(Base.Broadcast, Symbol("##5#6")){getfield(Base.Broadcast, Symbol("##3#4"))}(#641#makeargs=getfield(Base.Broadcast, Symbol("##3#4"))()))), f=typeof(Base.tanh)()), args=(Flux.Tracker.TrackedArray{Float64, 2, Array{Float64, 2}}(tracker=Flux.Tracker.Tracked{Array{Float64, 2}}(ref=0x00000000, f=Flux.Tracker.Call{getfield(Flux.Tracker, Symbol("##424#425")){Flux.Tracker.TrackedArray{Float64, 2, Array{Float64, 2}}, Flux.Tracker.TrackedArray{Float64, 2, Array{Float64, 2}}}, Tuple{Flux.Tracker.Tracked{Array{Float64, 2}}, Flux.Tracker.Tracked{Array{Float64, 2}}}}(func=getfield(Flux.Tracker, Symbol("##424#425")){Flux.Tracker.TrackedArray{Float64, 2, Array{Float64, 2}}, Flux.Tracker.TrackedArray{Float64, 2, Array{Float64, 2}}}(a=Flux.Tracker.TrackedArray{Float64, 2, Array{Float64, 2}}(tracker=Flux.Tracker.Tracked{Array{Float64, 2}}(ref=0x00000000, f=Flux.Tracker.Call{Nothing, Tuple{}}(func=nothing, args=()), isleaf=true, grad=Array{Float64, (4, 64)}[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), data=Array{Float64, (4, 64)}[-0.116073, 0.231022,...
The ellipses at the end is where the "arrays after arrays after arrays" begins. In any case, I'm just wondering if this is expected given my implementation? If not, would love to get your thoughts on what could be going wrong.