pyproximal.utils.bilinear.LowRankFactorizedMatrix#
- class pyproximal.utils.bilinear.LowRankFactorizedMatrix(X, Y, d, Op=None)[source]#
Low-Rank Factorized Matrix operator.
Bilinear operator representing the L2 norm of a Low-Rank Factorized Matrix defined as: \(H(\mathbf{X}, \mathbf{Y}) = \frac{1}{2} \|\mathbf{Op}(\mathbf{X}\mathbf{Y}) - \mathbf{d}\|_2^2\), where \(\mathbf{X}\) is a matrix of size \(n \times k\), \(\mathbf{Y}\) is a matrix of size \(k \times m\), and \(\mathbf{Op}\) is a linear operator of size \(p \times n\).
- Parameters
- X
numpy.ndarray
Left-matrix of size \(n \times k\)
- Y
numpy.ndarray
Right-matrix of size \(k \times m\)
- d
numpy.ndarray
Data vector
- Op
pylops.LinearOperator
, optional Linear operator
- X
Notes
The Low-Rank Factorized Matrix operator has gradient with respect to x equal to:
\[\nabla_x H(\mathbf{x};\ \mathbf{y}) = \mathbf{Op}^H(\mathbf{Op}(\mathbf{X}\mathbf{Y}) - \mathbf{d})\mathbf{Y}^H\]and gradient with respect to y equal to:
\[\nabla_y H(\mathbf{y}; \mathbf{x}) = \mathbf{X}^H \mathbf{Op}^H(\mathbf{Op} (\mathbf{X}\mathbf{Y}) - \mathbf{d})\]Note that in both cases, the currently stored :math`mathbf{x}`/:math`mathbf{y}` variable is used for the second variable within parenthesis (after ;).
Methods
__init__
(X, Y, d[, Op])grad
(x)gradx
(x)grady
(y)lx
(x)ly
(y)matvec
(x)updatex
(x)Update x variable (to be used to update the internal variable x)
updatexy
(x)updatey
(y)Update y variable (to be used to update the internal variable y)
Examples using pyproximal.utils.bilinear.LowRankFactorizedMatrix
#
Low-Rank completion via Matrix factorization