bicgstab#

deepinv.optim.utils.bicgstab(A, b, init=None, max_iter=1e2, tol=1e-5, parallel_dim=0, verbose=False, left_precon=lambda x: ..., right_precon=lambda x: ...)[source]#

Biconjugate gradient stabilized algorithm.

Solves \(Ax=b\) with \(A\) squared using the BiCGSTAB algorithm:

Van der Vorst, H. A. (1992). “Bi-CGSTAB: A Fast and Smoothly Converging Variant of Bi-CG for the Solution of Nonsymmetric Linear Systems”. SIAM J. Sci. Stat. Comput. 13 (2): 631–644.

For more details see: http://en.wikipedia.org/wiki/Biconjugate_gradient_stabilized_method

Parameters:
  • A (Callable) – Linear operator as a callable function.

  • b (torch.Tensor) – input tensor of shape (B, …)

  • init (torch.Tensor) – Optional initial guess.

  • max_iter (int) – maximum number of BiCGSTAB iterations.

  • tol (float) – absolute tolerance for stopping the BiCGSTAB algorithm.

  • parallel_dim (None, int, List[int]) – dimensions to be considered as batch dimensions. If None, all dimensions are considered as batch dimensions.

  • verbose (bool) – Output progress information in the console.

  • left_precon (Callable) – left preconditioner as a callable function.

  • right_precon (Callable) – right preconditioner as a callable function.

Returns:

(torch.Tensor) \(x\) of shape (B, …)