aboutsummaryrefslogtreecommitdiff
path: root/src/spiral.c
diff options
context:
space:
mode:
authory-jan137 <yousefjan24000@gmail.com>2026-03-18 14:04:47 +0300
committery-jan137 <yousefjan24000@gmail.com>2026-03-18 14:04:47 +0300
commit063b20be98747ba0b288545e653ef9489bf14a54 (patch)
treeb655758d2361dda0c6ffd35d6add6c5ea0f5aba4 /src/spiral.c
parentc9583c9897120cea7357ebc78b621aac0440da2c (diff)
Replace DynMLP with DynNet
Diffstat (limited to 'src/spiral.c')
-rw-r--r--src/spiral.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/spiral.c b/src/spiral.c
index 5d5cc00..e925ea9 100644
--- a/src/spiral.c
+++ b/src/spiral.c
@@ -52,12 +52,13 @@ void dataset_free(Dataset *ds) {
free(ds->target);
}
-double evaluate(const DynMLP *net, const double *theta,
+double evaluate(DynNet *net, const double *theta,
const Dataset *ds, double t0, double t1,
double atol, double rtol) {
int D = net->D;
- Workspace ws = workspace_alloc(D, net->H, net->nparams);
- AdjointCtx ac = { *net, theta, D, net->nparams, &ws };
+ double *ws = vec_alloc(net->total_workspace);
+ double *neg_a = vec_alloc(D);
+ AdjointCtx ac = { net, theta, ws, neg_a };
double total_loss = 0.0;
for (int i = 0; i < ds->num_samples; i++) {
ODEResult fwd = ode_solve(neural_ode_rhs, ds->z0[i], t0, t1,
@@ -68,6 +69,7 @@ double evaluate(const DynMLP *net, const double *theta,
}
free(fwd.y);
}
- workspace_free(&ws);
+ free(ws);
+ free(neg_a);
return total_loss / (double)ds->num_samples;
}