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_misfit
Objective Data misfit term \(\phi_d\).
- model_norm
Objective 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_beta
float Starting value for the trade-off parameter \(\beta\).
- initial_model(
n_params)array Initial model to use in the inversion.
- minimizer
Minimizer Instance of
Minimizerused to minimize the objective function during the inversion.- beta_cooling_factor
float, 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_rtol
float, 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_target
float, optional Chi factor target for the stage one (the L2 inversion). Once this chi target is reached, the second stage starts.
- model_norm_rtol
float, 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_iterations
int, 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”}
or2darrayorsparsearrayorLinearOperatororNone, 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.
- data_misfit
- Returns: