Training via DiffEqFlux fails when
save_idxs keyword is used within the loss function. Differentiation seems to be the problem. Evaluation of the loss function works fine.
MWE is taken from the docs
using DifferentialEquations, Flux, Optim, DiffEqFlux function lotka_volterra!(du, u, p, t) x, y = u α, β, δ, γ = p du = dx = α*x - β*x*y du = dy = -δ*y + γ*x*y end # Initial condition u0 = [1.0, 1.0] # Simulation interval and intermediary points tspan = (0.0, 10.0) tsteps = 0.0:0.1:10.0 # LV equation parameter. p = [α, β, δ, γ] p = [1.5, 1.0, 3.0, 1.0] # Setup the ODE problem, then solve prob = ODEProblem(lotka_volterra!, u0, tspan, p) function loss(p) sol = solve(prob, Tsit5(), p=p, save_idxs=, saveat = tsteps) loss = sum(abs2, sol.-1) return loss, sol end result_ode = DiffEqFlux.sciml_train(loss, p, ADAM(0.1), maxiters = 100)