MDIteration#

class deepinv.optim.optim_iterators.MDIteration(bregman_potential=BregmanL2(), **kwargs)[source]#

Bases: OptimIterator

Iterator for Mirror Descent.

Class for a single iteration of the mirror descent (GD) algorithm for minimising \(f(x) + \lambda g(x)\).

For a given convex potential \(h\), the iteration is given by

\[\begin{split}\begin{equation*} \begin{aligned} v_{k} &= \nabla f(x_k) + \lambda \nabla g(x_k) \\ x_{k+1} &= \nabla h^*(\nabla h(x_k) - \gamma v_{k}) \end{aligned} \end{equation*}\end{split}\]

where \(\gamma\) is a stepsize.

The potential \(h\) should be specified in the cur_params dictionary.

forward(X, cur_data_fidelity, cur_prior, cur_params, y, physics, *args, **kwargs)[source]#

Single mirror descent iteration on the objective \(f(x) + \lambda g(x)\). The Bregman potential, which is an intance of the deepinv.optim.Bregman class, is used to compute the mirror descent step.

Parameters:
  • X (dict) – Dictionary containing the current iterate \(x_k\).

  • 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.Physics) – Instance of the Physics class defining the current physics.

Returns:

Dictionary {“est”: (x, ), “cost”: F} containing the updated current iterate and the estimated current cost.