View source on GitHub |
Solves systems of linear eqns A X = RHS
, given LU factorizations.
tf.linalg.lu_solve(
lower_upper, perm, rhs, validate_args=False, name=None
)
Note: this function does not verify the implied matrix is actually invertible
nor is this condition checked even when validate_args=True
.
lower_upper
: lu
as returned by tf.linalg.lu
, i.e., if matmul(P,
matmul(L, U)) = X
then lower_upper = L + U - eye
.perm
: p
as returned by tf.linag.lu
, i.e., if matmul(P, matmul(L, U)) =
X
then perm = argmax(P)
.rhs
: Matrix-shaped float Tensor
representing targets for which to solve;
A X = RHS
. To handle vector cases, use: lu_solve(..., rhs[...,
tf.newaxis])[..., 0]
.validate_args
: Python bool
indicating whether arguments should be checked
for correctness. Note: this function does not verify the implied matrix is
actually invertible, even when validate_args=True
.
Default value: False
(i.e., don't validate arguments).name
: Python str
name given to ops managed by this object.
Default value: None
(i.e., 'lu_solve').x
: The X
in A @ X = RHS
.import numpy as np
import tensorflow as tf
import tensorflow_probability as tfp
x = [[[1., 2],
[3, 4]],
[[7, 8],
[3, 4]]]
inv_x = tf.linalg.lu_solve(*tf.linalg.lu(x), rhs=tf.eye(2))
tf.assert_near(tf.matrix_inverse(x), inv_x)
# ==> True