tf.linalg.experimental.conjugate_gradient  |  TensorFlow v2.16.1 (original) (raw)

Conjugate gradient solver.

View aliases

Compat aliases for migration

SeeMigration guide for more details.

tf.compat.v1.linalg.experimental.conjugate_gradient

tf.linalg.experimental.conjugate_gradient(
    operator,
    rhs,
    preconditioner=None,
    x=None,
    tol=1e-05,
    max_iter=20,
    name='conjugate_gradient'
)

Solves a linear system of equations A*x = rhs for self-adjoint, positive definite matrix A and right-hand side vector rhs, using an iterative, matrix-free algorithm where the action of the matrix A is represented byoperator. The iteration terminates when either the number of iterations exceeds max_iter or when the residual norm has been reduced to toltimes its initial value, i.e. \(||rhs - A x_k|| <= tol ||rhs||\).

Args
operator A LinearOperator that is self-adjoint and positive definite.
rhs A possibly batched vector of shape [..., N] containing the right-hand size vector.
preconditioner A LinearOperator that approximates the inverse of A. An efficient preconditioner could dramatically improve the rate of convergence. If preconditioner represents matrix M(M approximatesA^{-1}), the algorithm uses preconditioner.apply(x) to estimateA^{-1}x. For this to be useful, the cost of applying M should be much lower than computing A^{-1} directly.
x A possibly batched vector of shape [..., N] containing the initial guess for the solution.
tol A float scalar convergence tolerance.
max_iter An integer giving the maximum number of iterations.
name A name scope for the operation.
Returns
output A namedtuple representing the final state with fields: i: A scalar int32 Tensor. Number of iterations executed. x: A rank-1 Tensor of shape [..., N] containing the computed solution. r: A rank-1 Tensor of shape [.., M] containing the residual vector. p: A rank-1 Tensor of shape [..., N]. A-conjugate basis vector. gamma: \(r \dot M \dot r\), equivalent to \(|