|TensorFlow 1 version||View source on GitHub|
LinearOperator acting like a [batch] zero matrix.
Compat aliases for migration
See Migration guide for more details.
tf.linalg.LinearOperatorZeros( num_rows, num_columns=None, batch_shape=None, dtype=None, is_non_singular=False, is_self_adjoint=True, is_positive_definite=False, is_square=True, assert_proper_shapes=False, name='LinearOperatorZeros' )
This operator acts like a [batch] zero matrix
A with shape
[B1,...,Bb, N, M] for some
b >= 0. The first
b indices index a
batch member. For every batch index
A[i1,...,ib, : :] is
N x M matrix. This matrix
A is not materialized, but for
purposes of broadcasting this shape will be relevant.
LinearOperatorZeros is initialized with
num_rows, and optionally
, then this operator will be initialized as a square matrix. Ifbatch_shape
, this operator efficiently passes through all
arguments. Ifbatch_shape` is provided, broadcasting may occur, which will
require making copies.
# Create a 2 x 2 zero matrix. operator = LinearOperatorZero(num_rows=2, dtype=tf.float32) operator.to_dense() ==> [[0., 0.] [0., 0.]] operator.shape ==> [2, 2] operator.determinant() ==> 0. x = ... Shape [2, 4] Tensor operator.matmul(x) ==> Shape [2, 4] Tensor, same as x. # Create a 2-batch of 2x2 zero matrices operator = LinearOperatorZeros(num_rows=2, batch_shape=) operator.to_dense() ==> [[[0., 0.] [0., 0.]], [[0., 0.] [0., 0.]]] # Here, even though the operator has a batch shape, the input is the same as # the output, so x can be passed through without a copy. The operator is able # to detect that no broadcast is necessary because both x and the operator # have statically defined shape. x = ... Shape [2, 2, 3] operator.matmul(x) ==> Shape [2, 2, 3] Tensor, same as tf.zeros_like(x) # Here the operator and x have different batch_shape, and are broadcast. # This