Skip to content

Python API examples

Use DEQN-JAX as a library — useful when you want to script experiments, plug a custom analysis on top of trained policies, or integrate with notebook-style workflows.

Train from a config object

from deqn_jax.config import TrainConfig
from deqn_jax.training.trainer import train_from_config

config = TrainConfig.from_yaml("configs/disaster.yaml")
config = config.with_overrides({"episodes": 500})

params, history = train_from_config(config)

history is a dict of per-episode metrics (loss, per-equation residuals, gradient norm). params is the trained Equinox model.

Construct a config programmatically

from deqn_jax.config import TrainConfig, NetworkConfig, OptimizerConfig

config = TrainConfig(
    model="brock_mirman",
    episodes=1000,
    network=NetworkConfig(type="mlp", hidden_sizes=(64, 64)),
    optimizer=OptimizerConfig(name="adam", learning_rate=1e-3),
)

Inspect a model spec

from deqn_jax.models import load_model

model = load_model("disaster")
print(model.state_names)
print(model.policy_names)
print(model.equation_names)
ss_state, ss_policy = model.steady_state_fn(model.constants)

Evaluate residuals on a custom state batch

import jax.numpy as jnp
from deqn_jax.training.loss import compute_residuals

states = jnp.array(...)   # [batch, n_states]
shock = jnp.zeros((states.shape[0], model.n_shocks))
residuals = compute_residuals(model, params, states, shock)

For full API details see the API reference.