![]() |
Applies a boolean mask to data
without flattening the mask dimensions.
Aliases:
tf.ragged.boolean_mask(
data,
mask,
name=None
)
Returns a potentially ragged tensor that is formed by retaining the elements
in data
where the corresponding value in mask
is True
.
output[a1...aA, i, b1...bB] = data[a1...aA, j, b1...bB]
Where
j
is thei
thTrue
entry ofmask[a1...aA]
.
Note that output
preserves the mask dimensions a1...aA
; this differs
from tf.boolean_mask
, which flattens those dimensions.
Args:
data
: A potentially ragged tensor.mask
: A potentially ragged boolean tensor.mask
's shape must be a prefix ofdata
's shape.rank(mask)
must be known statically.name
: A name prefix for the returned tensor (optional).
Returns:
A potentially ragged tensor that is formed by retaining the elements in
data
where the corresponding value in mask
is True
.
rank(output) = rank(data)
.output.ragged_rank = max(data.ragged_rank, rank(mask) - 1)
.
Raises:
ValueError
: ifrank(mask)
is not known statically; or ifmask.shape
is not a prefix ofdata.shape
.
Examples:
>>> # Aliases for True & False so data and mask line up. >>> T, F = (True, False)
tf.ragged.boolean_mask( # Mask a 2D Tensor. ... data=[[1, 2, 3], [4, 5, 6], [7, 8, 9]], ... mask=[[T, F, T], [F, F, F], [T, F, F]]).tolist() [[1, 3], [], [7]]
tf.ragged.boolean_mask( # Mask a 2D RaggedTensor. ... tf.ragged.constant([[1, 2, 3], [4], [5, 6]]), ... tf.ragged.constant([[F, F, T], [F], [T, T]])).tolist() [[3], [], [5, 6]]
>>> tf.ragged.boolean_mask( # Mask rows of a 2D RaggedTensor. ... tf.ragged.constant([[1, 2, 3], [4], [5, 6]]), ... tf.ragged.constant([True, False, True])).tolist() [[1, 2, 3], [5, 6]]