inversion_ideas.create_l2_inversion#

inversion_ideas.create_l2_inversion(data_misfit, model_norm, *, starting_beta, initial_model, minimizer, beta_cooling_factor=2.0, beta_cooling_rate=1, chi_target=1.0, max_iterations=None, cache_models=True, preconditioner=None)[source]#

Create inversion of the form \(\phi_d + \beta \phi_m\).

Build an inversion with a beta cooling schedule and a stopping criterion for a chi factor target.

Parameters:
data_misfitbase.Objective

Data misfit term \(\phi_d\).

model_normbase.Objective

Model norm \(\phi_m\).

starting_betafloat

Starting value for the trade-off parameter \(\beta\).

initial_model(n_params,) array

Initial model to use in the inversion.

minimizerbase.Minimizer or callable()

Instance of Minimizer or callable used to minimize the objective function during the inversion. It must take the objective function and a model as arguments.

beta_cooling_factorfloat, optional

Cooling factor for the trade-off parameter \(\beta\). Every beta_cooling_rate iterations, the \(\beta\) will be cooled down by dividing it by the beta_cooling_factor.

beta_cooling_rateint, optional

Cooling rate for the trade-off parameter \(\beta\). The trade-off parameter will be cooled down every beta_cooling_rate iterations.

chi_targetfloat, optional

Target for the chi factor. The inversion will finish after the data misfit reaches a \(\chi\) factor lower or equal to chi_target.

max_iterationsint, optional

Max amount of iterations that will be performed. If None, then there will be no limit on the total amount of iterations.

cache_modelsbool, optional

Whether to cache models after each iteration in the inversion.

preconditioner{“jacobi”} or 2d array or sparse array or LinearOperator or None, optional

Preconditioner that will be passed to the minimizer on every call during the inversion. If "bfgs", a default BFGS preconditioner will be used, where the initial estimate for it will be set as the Jacobi preconditioner of the model_norm times the starting_beta. If "jacobi", a default Jacobi preconditioner that will get updated on every iteration will be defined for the inversion. If None, no preconditioner will be passed.

Returns:
Inversion