pyproximal.Orthogonal#
- class pyproximal.Orthogonal(f, Q, partial=False, b=None, alpha=1.0)[source]#
Proximal operator of any function of the product between an orthogonal matrix and a vector (plus summation of a vector).
Proximal operator of any quadratic function \(g(\mathbf{x})=f(\mathbf{Qx} + \mathbf{b})\) where \(\mathbf{Q}\) is an orthogonal operator and \(\mathbf{b}\) is a vector in the data space of \(\mathbf{Q}\).
- Parameters
- f
pyproximal.ProxOperator
Proximal operator
- Q
pylops.LinearOperator
Orthogonal operator
- partial
bool
, optional Partial (
True
) of full (False
) orthogonality- b
np.ndarray
, optional Vector
- alpha
float
, optional Positive coefficient for partial orthogonality. It will be ignored if
partial=False
- f
Notes
The Proximal operator of any function of the form \(g(\mathbf{x}) = f(\mathbf{Qx} + \mathbf{b})\) with the operator \(\mathbf{Q}\) satisfying the following condition \(\mathbf{Q}\mathbf{Q}^T = \alpha \mathbf{I}\) (partial orthogonality) is [1]:
\[\prox_{\tau g}(x) = \frac{1}{\alpha} ((\alpha \mathbf{I} - \mathbf{Q}^H \mathbf{Q}) \mathbf{x} + \mathbf{Q}^H (\prox_{\alpha \tau f}(\mathbf{Qx} + \mathbf{b}) - \mathbf{b}))\]A special case arises when \(\mathbf{Q}\mathbf{Q}^T = \mathbf{Q}^T\mathbf{Q} = \mathbf{I}\) (full orthogonality), and the proximal operator reduces to:
\[\prox_{\tau g}(x) = \mathbf{Q}^H (\prox_{\tau f}(\mathbf{Qx} + \mathbf{b}) - \mathbf{b}))\]- 1
Daniel O’Connor, D., and Vandenberghe, L., “Primal-Dual Decomposition by Operator Splitting and Applications to Image Deblurring”, SIAM J. Imaging Sciences, vol. 7, pp. 1724–1754. 2014.
Methods
__init__
(f, Q[, partial, b, alpha])affine_addition
(v)Affine addition
chain
(g)Chain
grad
(x)Compute gradient
postcomposition
(sigma)Postcomposition
precomposition
(a, b)Precomposition
prox
(**kwargs)proxdual
(**kwargs)