pypose.optim.solver.PINV¶
- class pypose.optim.solver.PINV(atol=None, rtol=None, hermitian=False)[source]¶
The batched linear solver with pseudo inversion.
\[\mathbf{A}_i \bm{x}_i = \mathbf{b}_i, \]where \(\mathbf{A}_i \in \mathbb{C}^{M \times N}\) and \(\bm{b}_i \in \mathbb{C}^{M \times 1}\) are the \(i\)-th item of batched linear equations.
The solution is given by
\[\bm{x}_i = \mathrm{pinv}(\mathbf{A}_i) \mathbf{b}_i, \]where \(\mathrm{pinv}()\) is the pseudo inversion function.
- Parameters
atol (float, Tensor, optional) – the absolute tolerance value. When None it’s considered to be zero. Default:
None
.rtol (float, Tensor, optional) – the relative tolerance value. Default:
None
.hermitian (bool, optional) – indicates whether \(\mathbf{A}\) is Hermitian if complex or symmetric if real. Default:
False
.
More details go to torch.linalg.pinv.
Warning
It is always preferred to use
LSTSQ()
, which is faster and more numerically stable.Examples
>>> import pypose.optim.solver as ppos >>> A, b = torch.randn(2, 3, 3), torch.randn(2, 3, 1) >>> solver = ppos.PINV() >>> x = solver(A, b) tensor([[[-0.2675], [-0.1897], [ 0.2708]], [[-0.3472], [ 1.1191], [ 0.3301]]])