Here is the second part :
Zygote.Pullback{Tuple{typeof(lastindex), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.ZBack{ChainRules.var"#eachindex_pullback#376"{Tuple{IndexLinear, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}}, Zygote.Pullback{Tuple{typeof(last), Base.OneTo{Int64}}, Tuple{Zygote.ZBack{Zygote.var"#convert_pullback#330"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:stop, Zygote.Context{false}, Base.OneTo{Int64}, Int64}}}}, Zygote.Pullback{Tuple{Type{IndexLinear}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(DiffEqFlux.paramlength), FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}}, Tuple{Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Bool}}}, Zygote.ZBack{ChainRules.var"#times_pullback2#1350"{Int64, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:bias, Zygote.Context{false}, FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Bool}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:in, Zygote.Context{false}, FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:out, Zygote.Context{false}, FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}}}, Zygote.var"#2610#back#533"{Zygote.var"#543#545"{1, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{UnitRange{Int64}}}}, Zygote.Pullback{Tuple{typeof(DiffEqFlux.paramlength), FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}}, Tuple{Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Bool}}}, Zygote.ZBack{ChainRules.var"#times_pullback2#1350"{Int64, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:bias, Zygote.Context{false}, FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Bool}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:in, Zygote.Context{false}, FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:out, Zygote.Context{false}, FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}}}, Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Int64}}}}}, Zygote.ZBack{ChainRules.var"#:_pullback#276"{Tuple{Int64, Int64}}}, DiffEqFlux.var"#270#back#146"{DiffEqFlux.var"#FastDense_adjoint#145"{FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}, Zygote.var"#2610#back#533"{Zygote.var"#543#545"{1, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{UnitRange{Int64}}}}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{Nothing}}}, Zygote.ZBack{ChainRules.var"#:_pullback#276"{Tuple{Int64, Int64}}}, Zygote.var"#2145#back#281"{Zygote.var"#277#280"}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{Nothing}}}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{Nothing}}}, Zygote.Pullback{Tuple{typeof(lastindex), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.ZBack{ChainRules.var"#eachindex_pullback#376"{Tuple{IndexLinear, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}}, Zygote.Pullback{Tuple{typeof(last), Base.OneTo{Int64}}, Tuple{Zygote.ZBack{Zygote.var"#convert_pullback#330"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:stop, Zygote.Context{false}, Base.OneTo{Int64}, Int64}}}}, Zygote.Pullback{Tuple{Type{IndexLinear}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(DiffEqFlux.paramlength), FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}}, Tuple{Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Bool}}}, Zygote.ZBack{ChainRules.var"#times_pullback2#1350"{Int64, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:bias, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Bool}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:in, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:out, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}}}, Zygote.var"#2610#back#533"{Zygote.var"#543#545"{1, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{UnitRange{Int64}}}}, Zygote.Pullback{Tuple{typeof(DiffEqFlux.paramlength), FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}}, Tuple{Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Bool}}}, Zygote.ZBack{ChainRules.var"#times_pullback2#1350"{Int64, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:bias, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Bool}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:in, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:out, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}}}, Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Int64}}}}}, Zygote.ZBack{ChainRules.var"#:_pullback#276"{Tuple{Int64, Int64}}}, DiffEqFlux.var"#270#back#146"{DiffEqFlux.var"#FastDense_adjoint#145"{FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}, Zygote.var"#2610#back#533"{Zygote.var"#543#545"{1, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{UnitRange{Int64}}}}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{Nothing, Nothing}}}, Zygote.ZBack{ChainRules.var"#:_pullback#276"{Tuple{Int64, Int64}}}, Zygote.var"#2145#back#281"{Zygote.var"#277#280"}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{Nothing, Nothing}}}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{Nothing, Nothing}}}, Zygote.Pullback{Tuple{typeof(lastindex), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.ZBack{ChainRules.var"#eachindex_pullback#376"{Tuple{IndexLinear, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}}, Zygote.Pullback{Tuple{typeof(last), Base.OneTo{Int64}}, Tuple{Zygote.ZBack{Zygote.var"#convert_pullback#330"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:stop, Zygote.Context{false}, Base.OneTo{Int64}, Int64}}}}, Zygote.Pullback{Tuple{Type{IndexLinear}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(DiffEqFlux.paramlength), FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}}, Tuple{Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Bool}}}, Zygote.ZBack{ChainRules.var"#times_pullback2#1350"{Int64, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:bias, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Bool}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:in, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:out, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}}}, Zygote.var"#2610#back#533"{Zygote.var"#543#545"{1, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{UnitRange{Int64}}}}, Zygote.Pullback{Tuple{typeof(DiffEqFlux.paramlength), FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}}, Tuple{Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Bool}}}, Zygote.ZBack{ChainRules.var"#times_pullback2#1350"{Int64, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:bias, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Bool}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:in, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:out, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}}}, Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Int64}}}}}, Zygote.ZBack{ChainRules.var"#:_pullback#276"{Tuple{Int64, Int64}}}, Zygote.Pullback{Tuple{var"#3#4", Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.ZBack{ChainRules.var"#vect_pullback#1373"{1, Tuple{ChainRulesCore.ProjectTo{Float32, NamedTuple{(), Tuple{}}}}}}, Zygote.ZBack{ChainRules.var"#cos_pullback#1311"{Float32}}, Zygote.Pullback{Tuple{typeof(Zygote.literal_getindex), Float32, Val{1}}, Tuple{Zygote.Pullback{Tuple{typeof(getindex), Float32, Int64}, Any}}}, Zygote.Pullback{Tuple{typeof(gpu), Vector{Float32}}, Tuple{Zygote.Pullback{Tuple{typeof(gpu), Flux.FluxCUDAAdaptor, Vector{Float32}}, Any}, Zygote.Pullback{Tuple{Type{Flux.FluxCUDAAdaptor}}, Tuple{}}}}}}, Zygote.var"#2610#back#533"{Zygote.var"#543#545"{1, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{UnitRange{Int64}}}}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{Nothing, Nothing, Nothing}}}, Zygote.ZBack{ChainRules.var"#:_pullback#276"{Tuple{Int64, Int64}}}, Zygote.var"#2145#back#281"{Zygote.var"#277#280"}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{Nothing, Nothing, Nothing}}}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{Nothing, Nothing, Nothing}}}, Zygote.Pullback{Tuple{typeof(lastindex), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.ZBack{ChainRules.var"#eachindex_pullback#376"{Tuple{IndexLinear, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}}, Zygote.Pullback{Tuple{typeof(last), Base.OneTo{Int64}}, Tuple{Zygote.ZBack{Zygote.var"#convert_pullback#330"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:stop, Zygote.Context{false}, Base.OneTo{Int64}, Int64}}}}, Zygote.Pullback{Tuple{Type{IndexLinear}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(DiffEqFlux.paramlength), var"#3#4"}, Tuple{}}, Zygote.var"#2610#back#533"{Zygote.var"#543#545"{1, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{UnitRange{Int64}}}}, Zygote.Pullback{Tuple{typeof(DiffEqFlux.paramlength), var"#3#4"}, Tuple{}}, Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Int64}}}}})(?::Zygote.OneElement{Float32, 1, Tuple{Int64}, Tuple{Base.OneTo{Int64}}})
@ Zygote ~/.julia/packages/Zygote/XJ8pP/src/compiler/interface2.jl:0
[30] Pullback
@ ~/.julia/packages/DiffEqFlux/2IJEZ/src/fast_layers.jl:21 [inlined]
[31] (::Zygote.Pullback{Tuple{FastChain{Tuple{var"#3#4", FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}}}, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.Pullback{Tuple{typeof(DiffEqFlux.applychain), Tuple{var"#3#4", FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}}, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.Pullback{Tuple{typeof(DiffEqFlux.applychain), Tuple{FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.Pullback{Tuple{typeof(DiffEqFlux.applychain), Tuple{FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.Pullback{Tuple{typeof(DiffEqFlux.applychain), Tuple{FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.Pullback{Tuple{typeof(DiffEqFlux.applychain), Tuple{}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{}}, Zygote.ZBack{ChainRules.var"#:_pullback#276"{Tuple{Int64, Int64}}}, DiffEqFlux.var"#270#back#146"{DiffEqFlux.var"#FastDense_adjoint#145"{FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}, Zygote.var"#2610#back#533"{Zygote.var"#543#545"{1, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{UnitRange{Int64}}}}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{}}}, Zygote.ZBack{ChainRules.var"#:_pullback#276"{Tuple{Int64, Int64}}}, Zygote.var"#2145#back#281"{Zygote.var"#277#280"}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{}}}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{}}}, Zygote.Pullback{Tuple{typeof(lastindex), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.ZBack{ChainRules.var"#eachindex_pullback#376"{Tuple{IndexLinear, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}}, Zygote.Pullback{Tuple{typeof(last), Base.OneTo{Int64}}, Tuple{Zygote.ZBack{Zygote.var"#convert_pullback#330"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:stop, Zygote.Context{false}, Base.OneTo{Int64}, Int64}}}}, Zygote.Pullback{Tuple{Type{IndexLinear}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(DiffEqFlux.paramlength), FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}}, Tuple{Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Bool}}}, Zygote.ZBack{ChainRules.var"#times_pullback2#1350"{Int64, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:bias, Zygote.Context{false}, FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Bool}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:in, Zygote.Context{false}, FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:out, Zygote.Context{false}, FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}}}, Zygote.var"#2610#back#533"{Zygote.var"#543#545"{1, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{UnitRange{Int64}}}}, Zygote.Pullback{Tuple{typeof(DiffEqFlux.paramlength), FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}}, Tuple{Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Bool}}}, Zygote.ZBack{ChainRules.var"#times_pullback2#1350"{Int64, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:bias, Zygote.Context{false}, FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Bool}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:in, Zygote.Context{false}, FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:out, Zygote.Context{false}, FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}}}, Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Int64}}}}}, Zygote.ZBack{ChainRules.var"#:_pullback#276"{Tuple{Int64, Int64}}}, DiffEqFlux.var"#270#back#146"{DiffEqFlux.var"#FastDense_adjoint#145"{FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}, Zygote.var"#2610#back#533"{Zygote.var"#543#545"{1, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{UnitRange{Int64}}}}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{Nothing}}}, Zygote.ZBack{ChainRules.var"#:_pullback#276"{Tuple{Int64, Int64}}}, Zygote.var"#2145#back#281"{Zygote.var"#277#280"}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{Nothing}}}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{Nothing}}}, Zygote.Pullback{Tuple{typeof(lastindex), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.ZBack{ChainRules.var"#eachindex_pullback#376"{Tuple{IndexLinear, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}}, Zygote.Pullback{Tuple{typeof(last), Base.OneTo{Int64}}, Tuple{Zygote.ZBack{Zygote.var"#convert_pullback#330"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:stop, Zygote.Context{false}, Base.OneTo{Int64}, Int64}}}}, Zygote.Pullback{Tuple{Type{IndexLinear}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(DiffEqFlux.paramlength), FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}}, Tuple{Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Bool}}}, Zygote.ZBack{ChainRules.var"#times_pullback2#1350"{Int64, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:bias, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Bool}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:in, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:out, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}}}, Zygote.var"#2610#back#533"{Zygote.var"#543#545"{1, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{UnitRange{Int64}}}}, Zygote.Pullback{Tuple{typeof(DiffEqFlux.paramlength), FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}}, Tuple{Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Bool}}}, Zygote.ZBack{ChainRules.var"#times_pullback2#1350"{Int64, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:bias, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Bool}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:in, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:out, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}}}, Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Int64}}}}}, Zygote.ZBack{ChainRules.var"#:_pullback#276"{Tuple{Int64, Int64}}}, DiffEqFlux.var"#270#back#146"{DiffEqFlux.var"#FastDense_adjoint#145"{FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}, Zygote.var"#2610#back#533"{Zygote.var"#543#545"{1, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{UnitRange{Int64}}}}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{Nothing, Nothing}}}, Zygote.ZBack{ChainRules.var"#:_pullback#276"{Tuple{Int64, Int64}}}, Zygote.var"#2145#back#281"{Zygote.var"#277#280"}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{Nothing, Nothing}}}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{Nothing, Nothing}}}, Zygote.Pullback{Tuple{typeof(lastindex), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.ZBack{ChainRules.var"#eachindex_pullback#376"{Tuple{IndexLinear, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}}, Zygote.Pullback{Tuple{typeof(last), Base.OneTo{Int64}}, Tuple{Zygote.ZBack{Zygote.var"#convert_pullback#330"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:stop, Zygote.Context{false}, Base.OneTo{Int64}, Int64}}}}, Zygote.Pullback{Tuple{Type{IndexLinear}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(DiffEqFlux.paramlength), FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}}, Tuple{Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Bool}}}, Zygote.ZBack{ChainRules.var"#times_pullback2#1350"{Int64, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:bias, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Bool}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:in, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:out, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}}}, Zygote.var"#2610#back#533"{Zygote.var"#543#545"{1, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{UnitRange{Int64}}}}, Zygote.Pullback{Tuple{typeof(DiffEqFlux.paramlength), FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}}, Tuple{Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Bool}}}, Zygote.ZBack{ChainRules.var"#times_pullback2#1350"{Int64, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:bias, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Bool}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:in, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:out, Zygote.Context{false}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, Int64}}}}, Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Int64}}}}}, Zygote.ZBack{ChainRules.var"#:_pullback#276"{Tuple{Int64, Int64}}}, Zygote.Pullback{Tuple{var"#3#4", Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.ZBack{ChainRules.var"#vect_pullback#1373"{1, Tuple{ChainRulesCore.ProjectTo{Float32, NamedTuple{(), Tuple{}}}}}}, Zygote.ZBack{ChainRules.var"#cos_pullback#1311"{Float32}}, Zygote.Pullback{Tuple{typeof(Zygote.literal_getindex), Float32, Val{1}}, Tuple{Zygote.Pullback{Tuple{typeof(getindex), Float32, Int64}, Any}}}, Zygote.Pullback{Tuple{typeof(gpu), Vector{Float32}}, Tuple{Zygote.Pullback{Tuple{typeof(gpu), Flux.FluxCUDAAdaptor, Vector{Float32}}, Any}, Zygote.Pullback{Tuple{Type{Flux.FluxCUDAAdaptor}}, Tuple{}}}}}}, Zygote.var"#2610#back#533"{Zygote.var"#543#545"{1, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{UnitRange{Int64}}}}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{Nothing, Nothing, Nothing}}}, Zygote.ZBack{ChainRules.var"#:_pullback#276"{Tuple{Int64, Int64}}}, Zygote.var"#2145#back#281"{Zygote.var"#277#280"}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{Nothing, Nothing, Nothing}}}, Zygote.var"#2129#back#273"{Zygote.var"#268#272"{Tuple{Nothing, Nothing, Nothing}}}, Zygote.Pullback{Tuple{typeof(lastindex), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.ZBack{ChainRules.var"#eachindex_pullback#376"{Tuple{IndexLinear, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}}, Zygote.Pullback{Tuple{typeof(last), Base.OneTo{Int64}}, Tuple{Zygote.ZBack{Zygote.var"#convert_pullback#330"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:stop, Zygote.Context{false}, Base.OneTo{Int64}, Int64}}}}, Zygote.Pullback{Tuple{Type{IndexLinear}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(DiffEqFlux.paramlength), var"#3#4"}, Tuple{}}, Zygote.var"#2610#back#533"{Zygote.var"#543#545"{1, Float32, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Tuple{UnitRange{Int64}}}}, Zygote.Pullback{Tuple{typeof(DiffEqFlux.paramlength), var"#3#4"}, Tuple{}}, Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{Int64, Int64}}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:layers, Zygote.Context{false}, FastChain{Tuple{var"#3#4", FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}}}, Tuple{var"#3#4", FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, FastDense{typeof(relu), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}, FastDense{typeof(identity), DiffEqFlux.var"#initial_params#135"{Vector{Float32}}, Nothing}}}}}})(?::Zygote.OneElement{Float32, 1, Tuple{Int64}, Tuple{Base.OneTo{Int64}}})
@ Zygote ~/.julia/packages/Zygote/XJ8pP/src/compiler/interface2.jl:0
[32] Pullback
@ ./REPL[31]:12 [inlined]
[33] (::Zygote.Pullback{Tuple{typeof(NN_output), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Matrix{Float32}, Matrix{Float32}}, Any})(?::Nothing)
@ Zygote ~/.julia/packages/Zygote/XJ8pP/src/compiler/interface2.jl:0
[34] Pullback
@ ./REPL[32]:5 [inlined]
[35] (::Zygote.Pullback{Tuple{typeof(l13), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.var"#3834#back#1221"{Zygote.var"#1217#1220"{Float32, Int64}}, ComposedFunction{Zygote.Pullback{Tuple{Zygote.var"#1461#1462", typeof(abs2), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.var"#4229#back#1457"{Zygote.var"#1453#1456"{CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}, Zygote.Pullback{Tuple{typeof(Base.Broadcast.materialize), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{}}, Zygote.var"#4010#back#1303"{Zygote.var"#1299#1302"{CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}}}, typeof(ZygoteRules.unthunk_tangent)}, Zygote.Pullback{Tuple{typeof(Base.Broadcast.materialize), Float32}, Tuple{}}, Zygote.var"#1990#back#194"{Zygote.var"#190#193"{Zygote.Context{false}, GlobalRef, Matrix{Float32}}}, Zygote.var"#3802#back#1205"{Zygote.var"#1201#1204"{CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}, Zygote.Pullback{Tuple{typeof(NN_output), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Matrix{Float32}, Matrix{Float32}}, Any}, Zygote.Pullback{Tuple{typeof(Base.Broadcast.materialize), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Vector{Float32}}}, Zygote.var"#1990#back#194"{Zygote.var"#190#193"{Zygote.Context{false}, GlobalRef, Matrix{Float32}}}, Zygote.var"#1990#back#194"{Zygote.var"#190#193"{Zygote.Context{false}, GlobalRef, Matrix{Float32}}}, Zygote.Pullback{Tuple{typeof(NN_output), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Matrix{Float32}, Matrix{Float32}}, Any}, Zygote.var"#1990#back#194"{Zygote.var"#190#193"{Zygote.Context{false}, GlobalRef, Int64}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Vector{Float32}}}, Zygote.var"#1990#back#194"{Zygote.var"#190#193"{Zygote.Context{false}, GlobalRef, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}, Zygote.Pullback{Tuple{typeof(|>), Vector{Float32}, typeof(gpu)}, Tuple{Zygote.Pullback{Tuple{typeof(gpu), Vector{Float32}}, Tuple{Zygote.Pullback{Tuple{typeof(gpu), Flux.FluxCUDAAdaptor, Vector{Float32}}, Any}, Zygote.Pullback{Tuple{Type{Flux.FluxCUDAAdaptor}}, Tuple{}}}}}}, Zygote.var"#1990#back#194"{Zygote.var"#190#193"{Zygote.Context{false}, GlobalRef, Matrix{Float32}}}, Zygote.Pullback{Tuple{typeof(|>), Vector{Float32}, typeof(gpu)}, Tuple{Zygote.Pullback{Tuple{typeof(gpu), Vector{Float32}}, Tuple{Zygote.Pullback{Tuple{typeof(gpu), Flux.FluxCUDAAdaptor, Vector{Float32}}, Any}, Zygote.Pullback{Tuple{Type{Flux.FluxCUDAAdaptor}}, Tuple{}}}}}}}})(?::Float32)
@ Zygote ~/.julia/packages/Zygote/XJ8pP/src/compiler/interface2.jl:0
[36] (::Zygote.var"#75#76"{Zygote.Pullback{Tuple{typeof(l13), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.var"#3834#back#1221"{Zygote.var"#1217#1220"{Float32, Int64}}, ComposedFunction{Zygote.Pullback{Tuple{Zygote.var"#1461#1462", typeof(abs2), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{Zygote.var"#4229#back#1457"{Zygote.var"#1453#1456"{CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}, Zygote.Pullback{Tuple{typeof(Base.Broadcast.materialize), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{}}, Zygote.var"#4010#back#1303"{Zygote.var"#1299#1302"{CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}}}, typeof(ZygoteRules.unthunk_tangent)}, Zygote.Pullback{Tuple{typeof(Base.Broadcast.materialize), Float32}, Tuple{}}, Zygote.var"#1990#back#194"{Zygote.var"#190#193"{Zygote.Context{false}, GlobalRef, Matrix{Float32}}}, Zygote.var"#3802#back#1205"{Zygote.var"#1201#1204"{CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}, Zygote.Pullback{Tuple{typeof(NN_output), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Matrix{Float32}, Matrix{Float32}}, Any}, Zygote.Pullback{Tuple{typeof(Base.Broadcast.materialize), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}, Tuple{}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Vector{Float32}}}, Zygote.var"#1990#back#194"{Zygote.var"#190#193"{Zygote.Context{false}, GlobalRef, Matrix{Float32}}}, Zygote.var"#1990#back#194"{Zygote.var"#190#193"{Zygote.Context{false}, GlobalRef, Matrix{Float32}}}, Zygote.Pullback{Tuple{typeof(NN_output), CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}, Matrix{Float32}, Matrix{Float32}}, Any}, Zygote.var"#1990#back#194"{Zygote.var"#190#193"{Zygote.Context{false}, GlobalRef, Int64}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Vector{Float32}}}, Zygote.var"#1990#back#194"{Zygote.var"#190#193"{Zygote.Context{false}, GlobalRef, CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}}}, Zygote.Pullback{Tuple{typeof(|>), Vector{Float32}, typeof(gpu)}, Tuple{Zygote.Pullback{Tuple{typeof(gpu), Vector{Float32}}, Tuple{Zygote.Pullback{Tuple{typeof(gpu), Flux.FluxCUDAAdaptor, Vector{Float32}}, Any}, Zygote.Pullback{Tuple{Type{Flux.FluxCUDAAdaptor}}, Tuple{}}}}}}, Zygote.var"#1990#back#194"{Zygote.var"#190#193"{Zygote.Context{false}, GlobalRef, Matrix{Float32}}}, Zygote.Pullback{Tuple{typeof(|>), Vector{Float32}, typeof(gpu)}, Tuple{Zygote.Pullback{Tuple{typeof(gpu), Vector{Float32}}, Tuple{Zygote.Pullback{Tuple{typeof(gpu), Flux.FluxCUDAAdaptor, Vector{Float32}}, Any}, Zygote.Pullback{Tuple{Type{Flux.FluxCUDAAdaptor}}, Tuple{}}}}}}}}})(?::Float32)
@ Zygote ~/.julia/packages/Zygote/XJ8pP/src/compiler/interface.jl:45
[37] gradient(f::Function, args::CuArray{Float32, 1, CUDA.Mem.DeviceBuffer})
@ Zygote ~/.julia/packages/Zygote/XJ8pP/src/compiler/interface.jl:97
[38] top-level scope
@ REPL[33]:1
[39] top-level scope
@ ~/.julia/packages/CUDA/ZdCxS/src/initialization.jl:155
This leads me to believe that something is wrong with the neural network itself. Would I be accurate in concluding that?
Thank you once again!