pyproximal.optimization.primal.ADMML2ΒΆ
- pyproximal.optimization.primal.ADMML2(proxg: ProxOperator, Op: LinearOperator, b: ndarray[tuple[Any, ...], dtype[_ScalarT]], A: LinearOperator, x0: ndarray[tuple[Any, ...], dtype[_ScalarT]], tau: float, niter: int = 10, z0: ndarray[tuple[Any, ...], dtype[_ScalarT]] | None = None, gfirst: bool = False, tol: float | None = None, rtol: float | None = None, callback: Callable[[ndarray[tuple[Any, ...], dtype[_ScalarT]]], None] | None = None, callbackz: bool = False, show: bool = False, itershow: tuple[int, int, int] = (10, 10, 10), **kwargs_solver: dict[str, Any]) tuple[ndarray[tuple[Any, ...], dtype[_ScalarT]], ndarray[tuple[Any, ...], dtype[_ScalarT]]][source]ΒΆ
Alternating Direction Method of Multipliers for L2 misfit term
Solves the following minimization problem using Alternating Direction Method of Multipliers:
\[\begin{split}\mathbf{x},\mathbf{z} = \argmin_{\mathbf{x},\mathbf{z}} \frac{1}{2}||\mathbf{Op}\mathbf{x} - \mathbf{b}||_2^2 + g(\mathbf{z}) \\ s.t. \; \mathbf{Ax}=\mathbf{z}\end{split}\]where \(g(\mathbf{z})\) is any convex function that has a known proximal operator.
- Parameters:
- proxg
pyproximal.ProxOperator Proximal operator of g function
- Op
pylops.LinearOperator Linear operator of data misfit term
- b
numpy.ndarray Data
- A
pylops.LinearOperator Linear operator of regularization term
- x0
numpy.ndarray Initial vector
- tau
float Positive scalar weight, which should satisfy the following condition to guarantees convergence: \(\tau \in (0, 1/\lambda_{max}(\mathbf{A}^H\mathbf{A})]\).
- niter
int, optional Number of iterations of iterative scheme
- z0
numpy.ndarray Initial auxiliary vector. If
None, initialized toA @ x0.- gfirst
bool, optional Apply Proximal of operator
gfirst (True) or Proximal of operatorffirst (False)- tol
float, optional Tolerance on change of objective function (used as stopping criterion). If
tol=None, run untilniteris reached- rtol
float, optional Relative tolerance on objective function wrt initial value. Stops the solver when the ratio of the current objective function to the initial objective function is below this value. If
rtol=None, run untilniteris reached or the other tolerance criterion is met- callback
callable, optional Function with signature (
callback(x)) to call after each iteration wherexis the current model vector- 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.
- **kwargs_solver
Arbitrary keyword arguments for
scipy.sparse.linalg.lsqrused to solve the x-update
- proxg
- Returns:
- x
numpy.ndarray Inverted model
- z
numpy.ndarray Inverted second model
- x
- Raises:
- ValueError
If both
x0andz0are set toNoneorx0is set to None
See also
ADMMADMM
LinearizedADMMLinearized ADMM
Notes