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