lu as returned by tf.linalg.lu, i.e., if
matmul(P, matmul(L, U)) = X then lower_upper = L + U - eye.
p as returned by tf.linag.lu, i.e., if
matmul(P, matmul(L, U)) = X then perm = argmax(P).
Matrix-shaped float Tensor representing targets for which to solve;
A X = RHS. To handle vector cases, use:
lu_solve(..., rhs[..., tf.newaxis])[..., 0].
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).
Python str name given to ops managed by this object.
Default value: None (i.e., 'lu_solve').
The X in A @ X = RHS.
import numpy as np
import tensorflow as tf
import tensorflow_probability as tfp
x = [[[1., 2],
inv_x = tfp.math.lu_solve(*tf.linalg.lu(x), rhs=tf.eye(2))
# ==> True