Apply boolean mask to tensor.
Aliases:
tf.compat.v2.boolean_mask
tf.boolean_mask(
tensor,
mask,
axis=None,
name='boolean_mask'
)
Numpy equivalent is tensor[mask]
.
# 1-D example
tensor = [0, 1, 2, 3]
mask = np.array([True, False, True, False])
boolean_mask(tensor, mask) # [0, 2]
In general, 0 < dim(mask
) = K <= dim(tensor
), and mask
's shape must match the first K dimensions of tensor
's shape. We then have: boolean_mask
(tensor
, mask
)[i, j1,...,jd] = tensor
[i1,...,iKi1,...,iK
,j1,...,jd] where (i1,...,iKi1,...,iK
) is the ith True
entry of mask
(row-major order). The axis
could be used with mask
to indicate the axis
to mask
from. In that case, axis
+ dim(mask
) <= dim(tensor
) and mask
's shape must match the first axis
+ dim(mask
) dimensions of tensor
's shape.
tf.ragged.boolean_maskSee also: , which can be applied to both dense and ragged tensors, and can be used if you need to preserve the masked dimensions of tensor (rather than flattening them, as tf.boolean_mask does).
Args:
tensor
: N-Dtensor
.mask
: K-D booleantensor
, K <= N and K must be known statically.axis
: A 0-D int Tensor representing theaxis
intensor
tomask
from. By default,axis
is 0 which willmask
from the first dimension. Otherwise K +axis
<= N.name
: Aname
for this operation (optional).
Returns:
(N-K+1)-dimensional tensor
populated by entries in tensor
corresponding to True
values in mask
.
Raises:
ValueError
: If shapes do not conform.
Examples:
# 2-D example
tensor = [[1, 2], [3, 4], [5, 6]]
mask = np.array([True, False, True])
boolean_mask(tensor, mask) # [[1, 2], [5, 6]]