Учитывая двумерный тензор x
размера (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.