pyproximal.SingularValuePenalty#
- class pyproximal.SingularValuePenalty(dim: Tuple[int, ...], penalty: ProxOperator)[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
- dim
tuple Size of matrix \(\mathbf{X}\).
- penalty
pyproximal.ProxOperator Function acting on the singular values.
- dim
Notes
The pyproximal implementation allows
penaltyto be anypyproximal.ProxOperatoracting 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)Gradient of the Moreau envelope of the function.
postcomposition(sigma)Postcomposition
precomposition(a, b)Precomposition
prox(**kwargs)proxdual(**kwargs)