tests.test_logging module
- class CrashModel(central_param: ndarray, param_limits: ndarray, name: str | None = None)[source]
Bases:
Model
- forward(param)[source]
Executed the forward pass of the model to obtain data from a parameter.
- Parameters:
param (np.ndarray) – The parameter for which the data should be generated.
- Returns:
The data generated from the parameter.
- Return type:
np.ndarray
Examples:
import numpy as np from eulerpi.examples.heat import Heat from eulerpi.core.model import JaxModel from jax import vmap # instantiate the heat model model = Heat() # define a 3D example parameter for the heat model example_param = np.array([1.4, 1.6, 0.5]) # the forward simulation is achieved by using the forward method of the model sim_result = model.forward(example_param) # in a more realistic scenario, we would like to perform the forward pass on multiple parameters at once multiple_params = np.array([[1.5, 1.5, 0.5], [1.4, 1.4, 0.6], [1.6, 1.6, 0.4], model.central_param, [1.5, 1.4, 0.4]]) # try to use jax vmap to perform the forward pass on multiple parameters at once if isinstance(model, JaxModel): multiple_sim_results = vmap(model.forward, in_axes=0)(multiple_params) # if the model is not a jax model, we can use numpy vectorize to perform the forward pass else: multiple_sim_results = np.vectorize(model.forward, signature="(n)->(m)")(multiple_params)
- jacobian(param)[source]
Evaluates the jacobian of the
forward()
method.- Parameters:
param (np.ndarray) – The parameter for which the jacobian should be evaluated.
- Returns:
The jacobian for the variables returned by the
forward()
method with respect to the parameters.- Return type:
np.ndarray
Examples:
import numpy as np from eulerpi.examples.heat import Heat from eulerpi.core.model import JaxModel from jax import vmap # instantiate the heat model model = Heat() # define a 3D example parameter for the heat model example_param = np.array([1.4, 1.6, 0.5]) sim_jacobian = model.jacobian(example_param) # Similar to the forward pass, also the evaluation of the jacobian can be vectorized. # This yields a 3D array of shape (num_params, data_dim, param_dim) = (4,5,3) in this example. multiple_params = np.array([[1.5, 1.5, 0.5], [1.4, 1.4, 0.6], model.central_param, [1.5, 1.4, 0.4]]) # try to use jax vmap for vectorization if possible if isinstance(model, JaxModel): multiple_sim_jacobians = vmap(model.jacobian, in_axes=0)(multiple_params) # if the model is not a jax model, we can use numpy vectorize to vectorize else: multiple_sim_jacobians = np.vectorize(model.jacobian, signature="(n)->(m)")(multiple_params)
- data_dim: int | None = 1
- param_dim: int | None = 1