# pyproximal.SingularValuePenalty#

class pyproximal.SingularValuePenalty(dim, penalty)[source]#

Proximal operator of a penalty acting on the singular values.

Generic regularizer $$\mathcal{R}_f$$ acting on the singular values of a matrix,

$\mathcal{R}_f(\mathbf{X}) = f(\boldsymbol\lambda)$

where $$\mathbf{X}$$ is a matrix of size $$M \times N$$ and $$\boldsymbol\lambda$$ is the corresponding singular value vector.

Parameters
dimtuple

Size of matrix $$\mathbf{X}$$.

penaltypyproximal.ProxOperator

Function acting on the singular values.

Notes

The pyproximal implementation allows penalty to be any pyproximal.ProxOperator acting on the singular values; however, not all penalties will result in a mathematically accurate proximal operator defined this way. Given a penalty $$f$$, the proximal operator is assumed to be

$\prox_{\tau \mathcal{R}_f}(\mathbf{X}) = \mathbf{U} \diag\left( \prox_{\tau f}(\boldsymbol\lambda)\right) \mathbf{V}^H$

where $$\mathbf{X} = \mathbf{U}\diag(\boldsymbol\lambda)\mathbf{V}^H$$, is an SVD of $$\mathbf{X}$$. It is the user’s responsibility to check that this is true for their particular choice of penalty.

Methods

 __init__(dim, penalty) affine_addition(v) Affine addition chain(g) Chain grad(x) Compute gradient postcomposition(sigma) Postcomposition precomposition(a, b) Precomposition prox(**kwargs) proxdual(**kwargs)