-
-
Notifications
You must be signed in to change notification settings - Fork 80
Open
Description
When I try adjoint sensitivity with a second order ODE I get an error:
using OrdinaryDiffEq
using DiffEqSensitivity
using Zygote
function acceleration!(dv,v,u,p,t)
dv .= [1.0, 1.0] .* p[1]
end
initial_positions = [0.0,0.1]
initial_velocities = [0.5,0.0]
tspan = (0,100.)
params = [0.1]
prob = SecondOrderODEProblem(acceleration!,initial_velocities,initial_positions,tspan,params)
sol = solve(prob, KahanLi8(), dt=1/10)
# Works okay
function loss(p)
prob = SecondOrderODEProblem(acceleration!,initial_velocities,initial_positions,tspan,p)
sol = solve(prob, KahanLi8(), dt=1/10, sensealg=BacksolveAdjoint())
return sol[end][3]
end
Zygote.gradient(loss,params)
ERROR: AssertionError: IndexStyle(value) === IndexLinear()
Stacktrace:
[1] ReverseDiff.TrackedArray{Float64, Float64, 1, RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}(value::RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, deriv::RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, tape::Vector{ReverseDiff.AbstractInstruction})
@ ReverseDiff ~/.julia/packages/ReverseDiff/E4Tzn/src/tracked.jl:77
[2] ReverseDiff.TrackedArray(value::RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, deriv::RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, tape::Vector{ReverseDiff.AbstractInstruction})
@ ReverseDiff ~/.julia/packages/ReverseDiff/E4Tzn/src/tracked.jl:86
[3] track(x::RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, ::Type{Float64}, tp::Vector{ReverseDiff.AbstractInstruction})
@ ReverseDiff ~/.julia/packages/ReverseDiff/E4Tzn/src/tracked.jl:452
[4] (::ReverseDiff.var"#657#658"{Float64, Vector{ReverseDiff.AbstractInstruction}})(x::RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}})
@ ReverseDiff ~/.julia/packages/ReverseDiff/E4Tzn/src/api/Config.jl:46
[5] map
@ ./tuple.jl:223 [inlined]
[6] ReverseDiff.GradientConfig(input::Tuple{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, Vector{Float64}, Vector{Float64}}, ::Type{Float64}, tp::Vector{ReverseDiff.AbstractInstruction})
@ ReverseDiff ~/.julia/packages/ReverseDiff/E4Tzn/src/api/Config.jl:46
[7] ReverseDiff.GradientConfig(input::Tuple{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, Vector{Float64}, Vector{Float64}}, tp::Vector{ReverseDiff.AbstractInstruction}) (repeats 2 times)
@ ReverseDiff ~/.julia/packages/ReverseDiff/E4Tzn/src/api/Config.jl:37
[8] ReverseDiff.GradientTape(f::Function, input::Tuple{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, Vector{Float64}, Vector{Float64}})
@ ReverseDiff ~/.julia/packages/ReverseDiff/E4Tzn/src/api/tape.jl:204
[9] adjointdiffcache(g::DiffEqSensitivity.var"#df#217"{Vector{AbstractVector{Float64}}, Colon}, sensealg::BacksolveAdjoint{0, true, Val{:central}, Bool, Bool}, discrete::Bool, sol::ODESolution{Float64, 2, Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}}, ODEProblem{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, Tuple{Float64, Float64}, true, Vector{Float64}, DynamicalODEFunction{true, ODEFunction{true, typeof(acceleration!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, ODEFunction{true, SciMLBase.var"#225#227", LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SecondOrderODEProblem{true}}, KahanLi8, OrdinaryDiffEq.InterpolationData{DynamicalODEFunction{true, ODEFunction{true, typeof(acceleration!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, ODEFunction{true, SciMLBase.var"#225#227", LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}, Vector{Float64}, Vector{Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}}, OrdinaryDiffEq.KahanLi8Cache{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, OrdinaryDiffEq.KahanLi8ConstantCache{Float64, Float64}}}, DiffEqBase.DEStats}, dg::Nothing, f::DynamicalODEFunction{true, ODEFunction{true, typeof(acceleration!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, ODEFunction{true, SciMLBase.var"#225#227", LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}; quad::Bool, noiseterm::Bool)
@ DiffEqSensitivity ~/.julia/packages/DiffEqSensitivity/cLl5o/src/adjoint_common.jl:144
[10] DiffEqSensitivity.ODEBacksolveSensitivityFunction(g::Function, sensealg::BacksolveAdjoint{0, true, Val{:central}, Bool, Bool}, discrete::Bool, sol::ODESolution{Float64, 2, Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}}, ODEProblem{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, Tuple{Float64, Float64}, true, Vector{Float64}, DynamicalODEFunction{true, ODEFunction{true, typeof(acceleration!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, ODEFunction{true, SciMLBase.var"#225#227", LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SecondOrderODEProblem{true}}, KahanLi8, OrdinaryDiffEq.InterpolationData{DynamicalODEFunction{true, ODEFunction{true, typeof(acceleration!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, ODEFunction{true, SciMLBase.var"#225#227", LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}, Vector{Float64}, Vector{Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}}, OrdinaryDiffEq.KahanLi8Cache{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, OrdinaryDiffEq.KahanLi8ConstantCache{Float64, Float64}}}, DiffEqBase.DEStats}, dg::Nothing, f::Function; noiseterm::Bool)
@ DiffEqSensitivity ~/.julia/packages/DiffEqSensitivity/cLl5o/src/backsolve_adjoint.jl:13
[11] ODEBacksolveSensitivityFunction
@ ~/.julia/packages/DiffEqSensitivity/cLl5o/src/backsolve_adjoint.jl:13 [inlined]
[12] ODEAdjointProblem(sol::ODESolution{Float64, 2, Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}}, ODEProblem{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, Tuple{Float64, Float64}, true, Vector{Float64}, DynamicalODEFunction{true, ODEFunction{true, typeof(acceleration!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, ODEFunction{true, SciMLBase.var"#225#227", LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SecondOrderODEProblem{true}}, KahanLi8, OrdinaryDiffEq.InterpolationData{DynamicalODEFunction{true, ODEFunction{true, typeof(acceleration!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, ODEFunction{true, SciMLBase.var"#225#227", LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}, Vector{Float64}, Vector{Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}}, OrdinaryDiffEq.KahanLi8Cache{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, OrdinaryDiffEq.KahanLi8ConstantCache{Float64, Float64}}}, DiffEqBase.DEStats}, sensealg::BacksolveAdjoint{0, true, Val{:central}, Bool, Bool}, g::Function, t::Vector{Float64}, dg::Nothing; checkpoints::Vector{Float64}, callback::Nothing, kwargs::Base.Pairs{Symbol, Float64, Tuple{Symbol, Symbol}, NamedTuple{(:abstol, :reltol), Tuple{Float64, Float64}}})
@ DiffEqSensitivity ~/.julia/packages/DiffEqSensitivity/cLl5o/src/backsolve_adjoint.jl:124
[13] _adjoint_sensitivities(sol::ODESolution{Float64, 2, Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}}, ODEProblem{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, Tuple{Float64, Float64}, true, Vector{Float64}, DynamicalODEFunction{true, ODEFunction{true, typeof(acceleration!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, ODEFunction{true, SciMLBase.var"#225#227", LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SecondOrderODEProblem{true}}, KahanLi8, OrdinaryDiffEq.InterpolationData{DynamicalODEFunction{true, ODEFunction{true, typeof(acceleration!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, ODEFunction{true, SciMLBase.var"#225#227", LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}, Vector{Float64}, Vector{Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}}, OrdinaryDiffEq.KahanLi8Cache{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, OrdinaryDiffEq.KahanLi8ConstantCache{Float64, Float64}}}, DiffEqBase.DEStats}, sensealg::BacksolveAdjoint{0, true, Val{:central}, Bool, Bool}, alg::KahanLi8, g::DiffEqSensitivity.var"#df#217"{Vector{AbstractVector{Float64}}, Colon}, t::Vector{Float64}, dg::Nothing; abstol::Float64, reltol::Float64, checkpoints::Vector{Float64}, corfunc_analytical::Nothing, callback::Nothing, kwargs::Base.Pairs{Symbol, Float64, Tuple{Symbol}, NamedTuple{(:dt,), Tuple{Float64}}})
@ DiffEqSensitivity ~/.julia/packages/DiffEqSensitivity/cLl5o/src/sensitivity_interface.jl:17
[14] adjoint_sensitivities(::ODESolution{Float64, 2, Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}}, ODEProblem{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, Tuple{Float64, Float64}, true, Vector{Float64}, DynamicalODEFunction{true, ODEFunction{true, typeof(acceleration!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, ODEFunction{true, SciMLBase.var"#225#227", LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SecondOrderODEProblem{true}}, KahanLi8, OrdinaryDiffEq.InterpolationData{DynamicalODEFunction{true, ODEFunction{true, typeof(acceleration!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, ODEFunction{true, SciMLBase.var"#225#227", LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}, Vector{Float64}, Vector{Vector{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}}}, OrdinaryDiffEq.KahanLi8Cache{RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, OrdinaryDiffEq.KahanLi8ConstantCache{Float64, Float64}}}, DiffEqBase.DEStats}, ::KahanLi8, ::Vararg{Any}; sensealg::BacksolveAdjoint{0, true, Val{:central}, Bool, Bool}, kwargs::Base.Pairs{Symbol, Union{Nothing, Float64}, Tuple{Symbol, Symbol}, NamedTuple{(:callback, :dt), Tuple{Nothing, Float64}}})
@ DiffEqSensitivity ~/.julia/packages/DiffEqSensitivity/cLl5o/src/sensitivity_interface.jl:6
[15] (::DiffEqSensitivity.var"#adjoint_sensitivity_backpass#216"{Base.Pairs{Symbol, Float64, Tuple{Symbol}, NamedTuple{(:dt,), Tuple{Float64}}}, KahanLi8, BacksolveAdjoint{0, true, Val{:central}, Bool, Bool}, RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, Vector{Float64}, Tuple{}, Colon, NamedTuple{(:dt,), Tuple{Float64}}})(Δ::Vector{AbstractVector{Float64}})
@ DiffEqSensitivity ~/.julia/packages/DiffEqSensitivity/cLl5o/src/concrete_solve.jl:229
[16] ZBack
@ ~/.julia/packages/Zygote/TaBlo/src/compiler/chainrules.jl:91 [inlined]
[17] (::Zygote.var"#kw_zpullback#42"{DiffEqSensitivity.var"#adjoint_sensitivity_backpass#216"{Base.Pairs{Symbol, Float64, Tuple{Symbol}, NamedTuple{(:dt,), Tuple{Float64}}}, KahanLi8, BacksolveAdjoint{0, true, Val{:central}, Bool, Bool}, RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, Vector{Float64}, Tuple{}, Colon, NamedTuple{(:dt,), Tuple{Float64}}}})(dy::Vector{AbstractVector{Float64}})
@ Zygote ~/.julia/packages/Zygote/TaBlo/src/compiler/chainrules.jl:117
[18] #215
@ ~/.julia/packages/Zygote/TaBlo/src/lib/lib.jl:203 [inlined]
[19] (::Zygote.var"#1760#back#217"{Zygote.var"#215#216"{Tuple{NTuple{6, Nothing}, Tuple{Nothing}}, Zygote.var"#kw_zpullback#42"{DiffEqSensitivity.var"#adjoint_sensitivity_backpass#216"{Base.Pairs{Symbol, Float64, Tuple{Symbol}, NamedTuple{(:dt,), Tuple{Float64}}}, KahanLi8, BacksolveAdjoint{0, true, Val{:central}, Bool, Bool}, RecursiveArrayTools.ArrayPartition{Float64, Tuple{Vector{Float64}, Vector{Float64}}}, Vector{Float64}, Tuple{}, Colon, NamedTuple{(:dt,), Tuple{Float64}}}}}})(Δ::Vector{AbstractVector{Float64}})
@ Zygote ~/.julia/packages/ZygoteRules/OjfTt/src/adjoint.jl:59
[20] Pullback
@ ~/.julia/packages/DiffEqBase/OPDgm/src/solve.jl:73 [inlined]
[21] (::typeof(∂(#solve#43)))(Δ::Vector{AbstractVector{Float64}})
@ Zygote ~/.julia/packages/Zygote/TaBlo/src/compiler/interface2.jl:0
[22] (::Zygote.var"#215#216"{Tuple{NTuple{6, Nothing}, Tuple{Nothing}}, typeof(∂(#solve#43))})(Δ::Vector{AbstractVector{Float64}})
@ Zygote ~/.julia/packages/Zygote/TaBlo/src/lib/lib.jl:203
[23] (::Zygote.var"#1760#back#217"{Zygote.var"#215#216"{Tuple{NTuple{6, Nothing}, Tuple{Nothing}}, typeof(∂(#solve#43))}})(Δ::Vector{AbstractVector{Float64}})
@ Zygote ~/.julia/packages/ZygoteRules/OjfTt/src/adjoint.jl:59
[24] Pullback
@ ~/.julia/packages/DiffEqBase/OPDgm/src/solve.jl:68 [inlined]
[25] (::typeof(∂(solve##kw)))(Δ::Vector{AbstractVector{Float64}})
@ Zygote ~/.julia/packages/Zygote/TaBlo/src/compiler/interface2.jl:0
[26] Pullback
@ ./REPL[11]:5 [inlined]
[27] (::typeof(∂(loss)))(Δ::Float64)
@ Zygote ~/.julia/packages/Zygote/TaBlo/src/compiler/interface2.jl:0
[28] (::Zygote.var"#48#49"{typeof(∂(loss))})(Δ::Float64)
@ Zygote ~/.julia/packages/Zygote/TaBlo/src/compiler/interface.jl:41
[29] gradient(f::Function, args::Vector{Float64})
@ Zygote ~/.julia/packages/Zygote/TaBlo/src/compiler/interface.jl:76
[30] top-level scope
@ REPL[12]:1
I get a similar error for most of the sensitivity algorithms at https://diffeq.sciml.ai/latest/analysis/sensitivity/#Sensitivity-Algorithms, apart from ForwardDiffSensitivity
which works.
Versions:
- Julia 1.7.0-beta4
- OrdinaryDiffEq v5.64.0
- DiffEqSensitivity v6.58.0
- Zygote v0.6.17
Metadata
Metadata
Assignees
Labels
No labels