Тензорная маска с индексами - PullRequest
0 голосов
/ 25 марта 2020

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

...