# tf.linalg.lu_matrix_inverse

<br />

|---|
| [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/tensorflow/tensorflow/blob/v2.13.1/tensorflow/python/ops/linalg/linalg_impl.py#L1035-L1097) |

Computes the inverse given the LU decomposition(s) of one or more matrices.

#### View aliases


**Compat aliases for migration**

See
[Migration guide](https://www.tensorflow.org/guide/migrate) for
more details.

[`tf.compat.v1.linalg.lu_matrix_inverse`](https://www.tensorflow.org/api_docs/python/tf/linalg/lu_matrix_inverse)

<br />

    tf.linalg.lu_matrix_inverse(
        lower_upper, perm, validate_args=False, name=None
    )

This op is conceptually identical to,

    inv_X = tf.lu_matrix_inverse(*tf.linalg.lu(X))
    tf.assert_near(tf.matrix_inverse(X), inv_X)
    # ==> True

> [!NOTE]
> **Note:** this function does not verify the implied matrix is actually invertible nor is this condition checked even when `validate_args=True`.

<br />

<br />

<br />

| ## Args ||
|---|---|
| `lower_upper` | `lu` as returned by [`tf.linalg.lu`](https://www.tensorflow.org/versions/r2.13/api_docs/python/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)`. |
| `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_matrix_inverse'). |

<br />

<br />

<br />

<br />

| ## Returns ||
|---|---|
| `inv_x` | The matrix_inv, i.e., `tf.matrix_inverse(tf.linalg.lu_reconstruct(lu, perm))`. |

<br />

#### Examples

    import numpy as np
    import tensorflow as tf
    import tensorflow_probability as tfp

    x = [[[3., 4], [1, 2]],
         [[7., 8], [3, 4]]]
    inv_x = tf.linalg.lu_matrix_inverse(*tf.linalg.lu(x))
    tf.assert_near(tf.matrix_inverse(x), inv_x)
    # ==> True