给定大小为x
的2D张量(batch_size, D)
以及大小分别为m1
的掩蔽索引向量m2
和(batch_size, )
,如何掩盖张量从而将i
的行x
的索引中小于m1[i]
或大于m2[i]
的索引的值设置为0?请注意,m1
和m2
引用索引(不是值),保证m1[i]
小于或等于m2[i]
,并且不同的行可能具有不同数量的值没有被掩盖的。
例如,x
的大小为(2, 4)
,m1
和m2
的大小为(2, )
:
# input
x = tf.Variable([[1., 2., -1., 5.], [4., -3., 3., -2]])
m1 = tf.Variable([1, 2])
m2 = tf.Variable([2, 2])
# desired masked result
y = tf.Variable([[0., 2., -1., 0.], [0., 0., 3., 0.]])
这里,第一行有两个非掩码值,而第二行只有一个。我正在使用TensorFlow 2。