ADMMIteration#
- class deepinv.optim.optim_iterators.ADMMIteration(**kwargs)[source]#
Bases:
OptimIterator
Iterator for alternating direction method of multipliers.
Class for a single iteration of the Alternating Direction Method of Multipliers (ADMM) algorithm for minimising \(f(x) + \lambda \regname(x)\).
If the attribute
g_first
is set to False (by default), the iteration is (see this paper):\[\begin{split}\begin{equation*} \begin{aligned} u_{k+1} &= \operatorname{prox}_{\gamma f}(x_k - z_k) \\ x_{k+1} &= \operatorname{prox}_{\gamma \lambda \regname}(u_{k+1} + z_k) \\ z_{k+1} &= z_k + \beta (u_{k+1} - x_{k+1}) \end{aligned} \end{equation*}\end{split}\]where \(\gamma>0\) is a stepsize and \(\beta>0\) is a relaxation parameter.
If the attribute
g_first
is set toTrue
, the functions \(f\) and \(\regname\) are inverted in the previous iteration.- forward(X, cur_data_fidelity, cur_prior, cur_params, y, physics)[source]#
Single iteration of the ADMM algorithm.
- Parameters:
X (dict) – Dictionary containing the current iterate and the estimated cost.
cur_data_fidelity (deepinv.optim.DataFidelity) – Instance of the DataFidelity class defining the current data_fidelity.
cur_prior (deepinv.optim.prior) – Instance of the Prior class defining the current prior.
cur_params (dict) – Dictionary containing the current parameters of the algorithm.
y (torch.Tensor) – Input data.
physics (deepinv.physics) – Instance of the physics modeling the observation.
- Returns:
Dictionary {“est”: (x, z), “cost”: F} containing the updated current iterate and the estimated current cost.