Tensorflow 中的二进制掩码

Mar*_*son 7 arrays masking tensorflow

我想沿张量的特定维度屏蔽所有其他值,但没有看到生成此类屏蔽的好方法。例如

#Masking on the 2nd dimension
a = [[1,2,3,4,5],[6,7,8,9,0]
mask = [[1,0,1,0,1],[1,1,1,1,1]]
b = a * mask #would return [[1,0,3,0,5],[6,0,8,0,0]]
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法来生成这样的掩码?

理想情况下,我想做以下事情:

mask = tf.ones_like(input_tensor)
mask[:,::2] = 0
mask * input_tensor
Run Code Online (Sandbox Code Playgroud)

但是切片分配似乎不像在 Numpy 中那么简单。

Dav*_*ong 1

您可以使用 python 以编程方式轻松创建这样的张量掩码。然后将其转换为张量。TensorFlow API 中没有此类支持。 tf.tile([1,0], num_of_repeats)可能是创建此类掩码的快速方法,但如果列数为奇数,则效果也不是很好。

(顺便说一句,如果您最终创建了布尔掩码,请使用tf.boolean_mask()

  • 我不认为 tf.boolean_mask() 保留原始张量的尺寸。它而是返回一维形状的非屏蔽元素。 (5认同)