|TensorFlow 1 version||View source on GitHub|
LinearOperator acting like a [batch] square lower triangular matrix.
Compat aliases for migration
See Migration guide for more details.
tf.linalg.LinearOperatorLowerTriangular( tril, is_non_singular=None, is_self_adjoint=None, is_positive_definite=None, is_square=None, name='LinearOperatorLowerTriangular' )
Used in the notebooks
|Used in the tutorials|
This operator acts like a [batch] lower triangular matrix
A with shape
[B1,...,Bb, N, N] for some
b >= 0. The first
b indices index a
batch member. For every batch index
A[i1,...,ib, : :] is
N x N matrix.
LinearOperatorLowerTriangular is initialized with a
[B1,...,Bb, N, N]. The upper triangle of the last two
dimensions is ignored.
# Create a 2 x 2 lower-triangular linear operator. tril = [[1., 2.], [3., 4.]] operator = LinearOperatorLowerTriangular(tril) # The upper triangle is ignored. operator.to_dense() ==> [[1., 0.] [3., 4.]] operator.shape ==> [2, 2] operator.log_abs_determinant() ==> scalar Tensor x = ... Shape [2, 4] Tensor operator.matmul(x) ==> Shape [2, 4] Tensor # Create a [2, 3] batch of 4 x 4 linear operators. tril = tf.random.normal(shape=[2, 3, 4, 4]) operator = LinearOperatorLowerTriangular(tril)
This operator acts on [batch] matrix with compatible shape.
x is a batch matrix with compatible shape for
operator.shape = [B1,...,Bb] + [N, N], with b >= 0 x.shape = [B1,...,Bb] + [N, R], with R >= 0.
operator is a
LinearOperatorLowerTriangular of shape
x.shape = [N, R]. Then
N^2 * Rmultiplications.
N * Rsize
operator.determinant()involves a size
x have shape
[B1,...,Bb, N, N] and
[B1,...,Bb, N, R], every operation increases in complexity by
Matrix property hints
LinearOperator is initialized with boolean flags of the form
X = non_singular, self_adjoint, positive_definite, square.
These have the following meaning:
is_X == True, callers should expect the operator to have the property
X. This is a promise that should be fulfilled, but is not a runtime assert. For example, finite floating point precision may result in these promises being violated.
is_X == False, callers should expect the operator to not have
is_X == None(the default), callers should have no expectation either way.
||Expect that this operator is non-singular. This operator is non-singular if and only if its diagonal elements are all non-zero.|
Expect that this operator is equal to its hermitian
transpose. This operator is self-adjoint only if it is diagonal with
real-valued diagonal entries. In this case it is advised to use
Expect that this operator is positive definite,
meaning the quadratic form
||Expect that this operator acts like square [batch] matrices.|
A name for this