1
- using ComponentArrays, DiffEqFlux, Zygote, Optimization, OrdinaryDiffEq, Random
1
+ using ComponentArrays,
2
+ DiffEqFlux, Zygote, Optimization, OptimizationOptimJL, OrdinaryDiffEq, Random
2
3
3
4
# A desired MWE for now, not a test yet.
4
5
@@ -27,6 +28,7 @@ tspan = (0.0, 10.0)
27
28
ndae = NeuralDAE (dudt2, (u, p, t) -> [u[1 ] + u[2 ] + u[3 ] - 1 ], tspan, DImplicitEuler ();
28
29
differential_vars = [true , true , false ])
29
30
ps, st = Lux. setup (Xoshiro (0 ), ndae)
31
+ ps = ComponentArray (ps)
30
32
truedu0 = similar (u₀)
31
33
32
34
ndae ((u₀, truedu0), ps, st)
@@ -36,13 +38,11 @@ predict_n_dae(p) = first(ndae(u₀, p, st))
36
38
function loss (p)
37
39
pred = predict_n_dae (p)
38
40
loss = sum (abs2, sol .- pred)
39
- loss, pred
41
+ return loss, pred
40
42
end
41
43
42
- p = p .+ rand (3 ) .* p
43
-
44
44
optfunc = Optimization. OptimizationFunction ((x, p) -> loss (x), Optimization. AutoZygote ())
45
- optprob = Optimization. OptimizationProblem (optfunc, p )
45
+ optprob = Optimization. OptimizationProblem (optfunc, ps )
46
46
res = Optimization. solve (optprob, BFGS (; initial_stepnorm = 0.0001 ))
47
47
48
48
# Same stuff with Lux
0 commit comments