DynaDojo / dynadojo

An Extensible Benchmarking Platform for Scalable Dynamical System Identification
https://dynadojo.github.io/dynadojo/
MIT License
14 stars 11 forks source link

Fix FBSNN error #22

Open carynbear opened 7 months ago

carynbear commented 7 months ago

Tried both FBSNN systems. Error running FTS(FBSNN, LR) with...

"L" : [4, 8, 16, 32, 64],
"trials" : 20,
"t" : 20,
"test_timesteps" : 20,
"test_examples" : 50,
"n" : 1000,
"E" : None,
"max_control_cost_per_dim": 1,
"control_horizons": 0,
"system_kwargs": None,
"evaluate": {
    "seed": 1027,
    "algo_kwargs" : None,
    "fit_kwargs" : None,
    "act_kwargs" : None,
    "num_parallel_cpu" : 0,
    "noisy": True, 
    "ood": True,
}

Error Message:

Traceback (most recent call last):
  File "/dynadojo/pkgs/scipy/optimize/_differentiable_functions.py", line 149, in fun_wrapped
    fx = np.asarray(fx).item()
ValueError: can only convert an array of size 1 to a Python scalar

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/local/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/dynadojo/experiments/__main__.py", line 139, in <module>
    run_challenge(
  File "/dynadojo/experiments/main.py", line 101, in run_challenge
    data = challenge.evaluate(
  File "/dynadojo/pkgs/dynadojo/challenges.py", line 158, in evaluate
    return super().evaluate(
  File "/dynadojo/pkgs/dynadojo/abstractions.py", line 502, in evaluate
    data_job = self.execute_job(**kwargs, **job)
  File "/dynadojo/pkgs/dynadojo/challenges.py", line 260, in execute_job
    test_set = self._gen_testset(system, in_dist=True, noisy=noisy)
  File "/dynadojo/pkgs/dynadojo/challenges.py", line 179, in _gen_testset
    return system.make_data(test_init_conds, timesteps=self._test_timesteps, noisy=noisy)
  File "/dynadojo/pkgs/dynadojo/wrappers.py", line 206, in make_data
    data = self._system.make_data(init_conds=init_conds, control=control, timesteps=timesteps, noisy=noisy)
  File "/dynadojo/pkgs/dynadojo/systems/utils/fbsnn.py", line 177, in make_data
    init_conds = self._expand_init_conds(init_conds)
  File "/dynadojo/pkgs/dynadojo/systems/utils/fbsnn.py", line 157, in _expand_init_conds
    expanded.append(self._unsolve_target(x, self.T, self.latent_dim))
  File "/dynadojo/pkgs/dynadojo/systems/fbsnn_pde/bsb.py", line 102, in _unsolve_target
    result = minimize(objective, initial_guess, method='SLSQP', constraints=constraints)
  File "/dynadojo/pkgs/scipy/optimize/_minimize.py", line 722, in minimize
    res = _minimize_slsqp(fun, x0, args, jac, bounds,
  File "/dynadojo/pkgs/scipy/optimize/_slsqp_py.py", line 383, in _minimize_slsqp
    sf = _prepare_scalar_function(func, x, jac=jac, args=args, epsilon=eps,
  File "/dynadojo/pkgs/scipy/optimize/_optimize.py", line 402, in _prepare_scalar_function
    sf = ScalarFunction(fun, x0, args, grad, hess,
  File "/dynadojo/pkgs/scipy/optimize/_differentiable_functions.py", line 166, in __init__
    self._update_fun()
  File "/dynadojo/pkgs/scipy/optimize/_differentiable_functions.py", line 262, in _update_fun
    self._update_fun_impl()
  File "/dynadojo/pkgs/scipy/optimize/_differentiable_functions.py", line 163, in update_fun
    self.f = fun_wrapped(self.x)
  File "/dynadojo/pkgs/scipy/optimize/_differentiable_functions.py", line 151, in fun_wrapped
    raise ValueError(
ValueError: The user-provided objective function must return a scalar value.