dymad.models.recipes

Functions

resolve_recipe(model_spec, model_config, ...)

Classes

CD_KM([encoder, dynamics, decoder, predict, ...])

Kernel Machine (KM) class.

CD_KMM(encoder, dynamics, decoder[, ...])

KM with Manifold constraints.

CD_KMSK(encoder, dynamics, decoder[, ...])

Kernel Machine (KM) class with skip connection.

CD_LDM([encoder, dynamics, decoder, ...])

Latent Dynamics Model (LDM) class.

CD_LFM(encoder, dynamics, decoder[, ...])

Linear Feature Model (LFM) class.

CD_SDM([encoder, dynamics, decoder, ...])

Sequential Dynamics Model (SDM) class.

RecipeResolution(dims, encoder_key, ...)

class dymad.models.recipes.CD_KM(encoder=None, dynamics=None, decoder=None, predict=None, model_config=None, dims=None)

Bases: ComposedDynamics

Kernel Machine (KM) class.

linear_solve(inp, out, **kwargs)

Fit the kernel dynamics using input-output pairs.

Return type:

tuple[Tensor, Tensor]

load_state_dict(state_dict, strict=True)

KRR relies on data, and when initialized some parameters are placeholders. Here we first update the shapes of those parameters to match the checkpoint, then call the standard load_state_dict to load values and do checks.

classmethod resolve_spec(model_spec, model_config, data_meta, dtype, device)

Resolve a typed model spec into concrete build-time components.

Return type:

RecipeResolution

class dymad.models.recipes.CD_KMM(encoder, dynamics, decoder, predict=None, model_config=None, dims=None)

Bases: CD_KM

KM with Manifold constraints.

The model is based on Geometrically constrained KRR, The prediction uses the normal correction scheme.

See more in Huang, He, Harlim & Li ICLR2025.

CONT = True
GRAPH = False
fenc_step(z, w, dt)

First-order Euler step with Normal Correction.

Return type:

Tensor

linear_solve(inp, out, **kwargs)

Fit the kernel dynamics using input-output pairs.

Return type:

tuple[Tensor, Tensor]

load_state_dict(state_dict, strict=True)

KMM relies on the Numpy-based object Manifold, and the defining parameters of the latter are registered as buffers in KMM. When self is initialized these buffers are placeholders. Here we first update the shapes of those buffers to match the checkpoint, then call the standard load_state_dict to load values and do checks. In the end we reconstruct the Manifold object from the loaded buffers, and set this object in appropriate locations.

class dymad.models.recipes.CD_KMSK(encoder, dynamics, decoder, predict=None, model_config=None, dims=None)

Bases: CD_KM

Kernel Machine (KM) class with skip connection.

linear_solve(inp, out, **kwargs)

Fit the kernel dynamics using input-output pairs.

Return type:

tuple[Tensor, Tensor]

class dymad.models.recipes.CD_LDM(encoder=None, dynamics=None, decoder=None, predict=None, model_config=None, dims=None)

Bases: ComposedDynamics

Latent Dynamics Model (LDM) class.

classmethod resolve_spec(model_spec, model_config, data_meta, dtype, device)

Resolve a typed model spec into concrete build-time components.

Return type:

RecipeResolution

class dymad.models.recipes.CD_LFM(encoder, dynamics, decoder, predict=None, model_config=None, dims=None)

Bases: ComposedDynamics

Linear Feature Model (LFM) class.

classmethod resolve_spec(model_spec, model_config, data_meta, dtype, device)

Resolve a typed model spec into concrete build-time components.

Return type:

RecipeResolution

class dymad.models.recipes.CD_SDM(encoder=None, dynamics=None, decoder=None, predict=None, model_config=None, dims=None)

Bases: ComposedDynamics

Sequential Dynamics Model (SDM) class.

dynamics(z, w)

Customized dynamics for SDM.

The input is (…, seq_len*z_dim) for z_{1:T}; Dynamics returns (…, z_dim) for z_{T+1}; then we concatenate (…, seq_len*z_dim) for z_{2:T+1} for the final output.

classmethod resolve_spec(model_spec, model_config, data_meta, dtype, device)

Resolve a typed model spec into concrete build-time components.

Return type:

RecipeResolution

class dymad.models.recipes.RecipeResolution(dims, encoder_key, feature_key, dynamics_key, decoder_key, processor_net, input_order)

Bases: object

decoder_key: str
dims: dict[str, int]
dynamics_key: str
encoder_key: str
feature_key: str
input_order: str | None
processor_net: Module
dymad.models.recipes.resolve_recipe(model_spec, model_config, data_meta, dtype, device)
Return type:

RecipeResolution