pyproximal.optimization.cls_primal.GeneralizedProximalGradient

class pyproximal.optimization.cls_primal.GeneralizedProximalGradient(callbacks: Callbacks = None)[source]

Generalized Proximal gradient

Solves the following minimization problem using Generalized Proximal gradient algorithm:

\[\mathbf{x} = \argmin_\mathbf{x} \sum_{i=1}^n f_i(\mathbf{x}) + \sum_{j=1}^m \epsilon_j g_j(\mathbf{x}),~~n,m \in \mathbb{N}^+\]

where the \(f_i(\mathbf{x})\) are smooth convex functions with a uniquely defined gradient and the \(g_j(\mathbf{x})\) are any convex function that have a known proximal operator.

Notes

The Generalized Proximal gradient algorithm can be expressed by the following recursion [1]:

\[\begin{split}\text{for } j=1,\cdots,n, \\ ~~~~\mathbf z_j^{k+1} = \mathbf z_j^{k} + \eta \left[prox_{\frac{\tau^k \epsilon_j}{w_j} g_j}\left(2 \mathbf{x}^{k} - \mathbf{z}_j^{k} - \tau^k \sum_{i=1}^n \nabla f_i(\mathbf{x}^{k})\right) - \mathbf{x}^{k} \right] \\ \mathbf{x}^{k+1} = \sum_{j=1}^n w_j \mathbf z_j^{k+1} \\\end{split}\]

where \(\sum_{j=1}^n w_j=1\). In the current implementation, \(w_j=1/n\) when not provided.

[1]

Raguet, H., Fadili, J. and Peyré, G. “Generalized Forward-Backward Splitting”, arXiv, 2012.

Methods

__init__([callbacks])

callback(x, *args, **kwargs)

Callback routine

finalize([nbar, show])

Finalize solver

memory_usage()

Compute memory usage of the solver

run(x, y[, niter, show, itershow])

Run solver

setup(proxfs, proxgs, x0, tau[, epsg, ...])

Setup solver

solve(proxfs, proxgs, x0, tau[, epsg, ...])

Run entire solver

step(x, y[, show])

Run one step of solver