inversion_ideas.create_sparse_inversion#
- inversion_ideas.create_sparse_inversion(data_misfit, model_norm, *, starting_beta, initial_model, minimizer, beta_cooling_factor=2.0, data_misfit_rtol=0.1, chi_l2_target=1.0, model_norm_rtol=0.001, max_iterations=None, cache_models=True, preconditioner=None)#
Create sparse norm inversion of the form: \(\phi_d + \beta \phi_m\).
Build an inversion where \(\phi_m\) is a sparse norm regularization. An IRLS algorithm will be applied, split in two stages. The inversion will stop when the following inequality holds:
\[\frac{|\phi_m^{(k)} - \phi_m^{(k-1)}|}{|\phi_m^{(k-1)}|} < \eta_{\phi_m}\]where \(\eta_{\phi_m}\) is the
model_norm_rtol.- Parameters:
- data_misfitObjective
Data misfit term \(\phi_d\).
- model_normObjective
Model norm \(\phi_m\). It can be a single objective function term or a combo containing multiple ones. At least one of them should be a sparse regularization term.
- starting_betafloat
Starting value for the trade-off parameter \(\beta\).
- initial_model(n_params) array
Initial model to use in the inversion.
- minimizerMinimizer
Instance of
Minimizerused to minimize the objective function during the inversion.- beta_cooling_factorfloat, optional
Cooling factor for the trade-off parameter \(\beta\). Every
beta_cooling_rateiterations, the \(\beta\) will be cooled down by dividing it by thebeta_cooling_factor.- data_misfit_rtolfloat, optional
Tolerance for the data misfit. This value is used to determine whether to cool down the IRLS threshold or beta. See eq. 21 in Fournier and Oldenburg (2019).
- chi_l2_targetfloat, optional
Chi factor target for the stage one (the L2 inversion). Once this chi target is reached, the second stage starts.
- model_norm_rtolfloat, optional
Tolerance for the model norm. This value is used to determine if the inversion should stop. See eq. 22 in Fournier and Oldenburg (2019).
- 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
minimizeron 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 themodel_normtimes thestarting_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