pylops.optimization.sparsity.splitbregman#
- pylops.optimization.sparsity.splitbregman(Op, y, RegsL1, x0=None, niter_outer=3, niter_inner=5, RegsL2=None, dataregsL2=None, mu=1.0, epsRL1s=None, epsRL2s=None, tol=1e-10, tau=1.0, restart=False, show=False, itershow=(10, 10, 10), show_inner=False, callback=None, **kwargs_lsqr)[source]#
Split Bregman for mixed L2-L1 norms.
Solve an unconstrained system of equations with mixed \(L_2\) and \(L_1\) regularization terms given the operator
Op
, a list of \(L_1\) regularization termsRegsL1
, and an optional list of \(L_2\) regularization termsRegsL2
.- Parameters
- Op
pylops.LinearOperator
Operator to invert
- y
numpy.ndarray
Data
- RegsL1
list
\(L_1\) regularization operators
- x0
numpy.ndarray
, optional Initial guess
- niter_outer
int
Number of iterations of outer loop
- niter_inner
int
Number of iterations of inner loop of first step of the Split Bregman algorithm. A small number of iterations is generally sufficient and for many applications optimal efficiency is obtained when only one iteration is performed.
- RegsL2
list
Additional \(L_2\) regularization operators (if
None
, \(L_2\) regularization is not added to the problem)- dataregsL2
list
, optional \(L_2\) Regularization data (must have the same number of elements of
RegsL2
or equal toNone
to use a zero data for every regularization operator inRegsL2
)- mu
float
, optional Data term damping
- epsRL1s
list
\(L_1\) Regularization dampings (must have the same number of elements as
RegsL1
)- epsRL2s
list
\(L_2\) Regularization dampings (must have the same number of elements as
RegsL2
)- tol
float
, optional Tolerance. Stop outer iterations if difference between inverted model at subsequent iterations is smaller than
tol
- tau
float
, optional Scaling factor in the Bregman update (must be close to 1)
- restart
bool
, optional The unconstrained inverse problem in inner loop is initialized with the initial guess (
True
) or with the last estimate (False
)- show
bool
, optional Display iterations log
- itershow
tuple
, optional Display set log for the first N1 steps, last N2 steps, and every N3 steps in between where N1, N2, N3 are the three element of the list.
- show_inner
bool
, optional Display inner iteration logs of lsqr
- callback
callable
, optional Function with signature (
callback(x)
) to call after each iteration wherex
is the current model vector- **kwargs_lsqr
Arbitrary keyword arguments for
scipy.sparse.linalg.lsqr
solver used to solve the first subproblem in the first step of the Split Bregman algorithm.
- Op
- Returns
- xinv
numpy.ndarray
Inverted model
- itn_out
int
Iteration number of outer loop upon termination
- cost
numpy.ndarray
, optional History of cost function through iterations
- xinv
Notes