simpeg.directives.UpdateSensitivityWeights#
- class simpeg.directives.UpdateSensitivityWeights(every_iteration=False, threshold_value=1e-12, threshold_method='amplitude', normalization_method='maximum', **kwargs)[source]#
- Bases: - InversionDirective- Sensitivity weighting for linear and non-linear least-squares inverse problems. - This directive computes the root-mean squared sensitivities for the forward simulation(s) attached to the inverse problem, then truncates and scales the result to create cell weights which are applied in the regularization. - Important - This directive requires that the map for the regularization function is either - simpeg.maps.Wiresor- simpeg.maps.IdentityMap. In other words, the sensitivity weighting cannot be applied for parametric inversion. In addition, the simulation(s) connected to the inverse problem must have a- getJor- getJtJdiagmethod.- Important - This directive must be placed before any directives which update the preconditioner for the inverse problem (i.e. - UpdatePreconditioner), and must be before any directives that estimate the starting trade-off parameter (i.e.- BetaEstimate_ByEigand- BetaEstimateMaxDerivative).- Parameters:
- every_iterationbool
- When - True, update sensitivity weighting at every model update; non-linear problems. When- False, create sensitivity weights for starting model only; linear problems.
- thresholdfloat
- Threshold value for smallest weighting value. 
- threshold_method{‘amplitude’, ‘global’, ‘percentile’}
- Threshold method for how threshold_value is applied: - amplitude:
- The smallest root-mean squared sensitivity is a fractional percent of the largest value; must be between 0 and 1. 
 
- global:
- The - threshold_valueis added to the cell weights prior to normalization; must be greater than 0.
 
- percentile:
- The smallest root-mean squared sensitivity is set using percentile threshold; must be between 0 and 100. 
 
 
- normalization_method{‘maximum’, ‘min_value’, None}
- Normalization method applied to sensitivity weights. - Options are: - maximum:
- Sensitivity weights are normalized by the largest value such that the largest weight is equal to 1. 
 
- minimum:
- Sensitivity weights are normalized by the smallest value, after thresholding, such that the smallest weights are equal to 1. 
 
- None:
- Normalization is not applied. 
 
 
 
 - Attributes - Data misfit associated with the directive. - Update sensitivity weights when model is updated. - Inverse problem associated with the directive. - Inversion object associated with the directive. - Normalization method applied to sensitivity weights. - Optimization algorithm associated with the directive. - Regularization associated with the directive. - Return simulation for all data misfits. - Return survey for all data misfits - Threshold method for how threshold_value is applied: - Threshold value used to set minimum weighting value. - Whether or not to print debugging information. - Methods - endIter()- Execute end of iteration. - finish()- Update inversion parameter(s) according to directive at end of inversion. - Compute sensitivity weights upon starting the inversion. - update()- Update sensitivity weights - validate(directiveList)- Validate directive against directives list. - Notes - Let \(\mathbf{J}\) represent the Jacobian. To create sensitivity weights, root-mean squared (RMS) sensitivities \(\mathbf{s}\) are computed by summing the squares of the rows of the Jacobian: \[\mathbf{s} = \Bigg [ \sum_i \, \mathbf{J_{i, \centerdot }}^2 \, \Bigg ]^{1/2}\]- The dynamic range of RMS sensitivities can span many orders of magnitude. When computing sensitivity weights, thresholding is generally applied to set a minimum value. - Thresholding: - If global thresholding is applied, we add a constant \(\tau\) to the RMS sensitivities: \[\mathbf{\tilde{s}} = \mathbf{s} + \tau\]- In the case of percentile thresholding, we let \(s_{\%}\) represent a given percentile. Thresholding to set a minimum value is applied as follows: \[\begin{split}\tilde{s}_j = \begin{cases} s_j \;\; for \;\; s_j \geq s_{\%} \\ s_{\%} \;\; for \;\; s_j < s_{\%} \end{cases}\end{split}\]- If absolute thresholding is applied, we define \(\eta\) as a fractional percent. In this case, thresholding is applied as follows: \[\begin{split}\tilde{s}_j = \begin{cases} s_j \;\; for \;\; s_j \geq \eta s_{max} \\ \eta s_{max} \;\; for \;\; s_j < \eta s_{max} \end{cases}\end{split}\]
Galleries and Tutorials using simpeg.directives.UpdateSensitivityWeights#
 
Sparse Inversion with Iteratively Re-Weighted Least-Squares
 
2.5D DC Resistivity and IP Least-Squares Inversion
 
1D Inversion of Time-Domain Data for a Single Sounding
 
Cross-gradient Joint Inversion of Gravity and Magnetic Anomaly Data
 
     
 
 
 
 
 
