Projection operators class hierarchy¶
Base class¶
-
class
pyunlocbox.functions.
proj
(epsilon=1, method='FISTA', **kwargs)[source]¶ Bases:
pyunlocbox.functions.func
Base class which defines the attributes of the proj objects.
See generic attributes descriptions of the
pyunlocbox.functions.func
base class.Parameters: epsilon : float, optional
The radius of the ball. Default is 1.
method : {‘FISTA’, ‘ISTA’}, optional
The method used to solve the problem. It can be ‘FISTA’ or ‘ISTA’. Default is ‘FISTA’.
Notes
- All indicator functions (projections) evaluate to zero by definition.
L2-ball¶
-
class
pyunlocbox.functions.
proj_b2
(**kwargs)[source]¶ Bases:
pyunlocbox.functions.proj
L2-ball function object.
This function is the indicator function \(i_S(z)\) of the set S which is zero if z is in the set and infinite otherwise. The set S is defined by \(\left\{z \in \mathbb{R}^N \mid \|A(z)-y\|_2 \leq \epsilon \right\}\).
See generic attributes descriptions of the
pyunlocbox.functions.proj
base class. Note that the constructor takes keyword-only parameters.Notes
- The tol parameter is defined as the tolerance for the projection on the L2-ball. The algorithm stops if \(\frac{\epsilon}{1-tol} \leq \|y-A(z)\|_2 \leq \frac{\epsilon}{1+tol}\).
- The evaluation of this function is zero.
- The L2-ball proximal operator evaluated at x is given by \(\operatorname{arg\,min}\limits_z \frac{1}{2} \|x-z\|_2^2 + i_S(z)\) which has an identical solution as \(\operatorname{arg\,min}\limits_z \|x-z\|_2^2\) such that \(\|A(z)-y\|_2 \leq \epsilon\). It is thus a projection of the vector x onto an L2-ball of diameter epsilon.
Examples
>>> import pyunlocbox >>> f = pyunlocbox.functions.proj_b2(y=[1, 1]) >>> x = [3, 3] >>> f.eval(x) 0 >>> f.prox(x, 0) array([ 1.70710678, 1.70710678])