选择满足特定条件的张量流中的索引

时间:2017-04-29 15:11:13

标签: tensorflow

我希望选择矩阵的元素,其中矩阵中元素的坐标满足特定条件。例如,条件可以是:(y_coordinate-x_coordinate)== -4 因此,将选择坐标满足此条件的那些元素。如何在不循环遍历每个元素的情况下有效地完成此操作?

1 个答案:

答案 0 :(得分:2)

也许你需要tf.gather_nd

iterSession = tf.InteractiveSession()

vals = tf.constant([[1,2,3], [4,5,6], [7,8,9]])
arr = tf.constant([[x, y] for x in range(3) for y in range(3) if -1 <= x - y <= 1])

arr.eval()
# >> array([[0, 0],
# >>        [0, 1],
# >>        [1, 0],
# >>        [1, 1],
# >>        [1, 2],
# >>        [2, 1],
# >>        [2, 2]], dtype=int32)

tf.gather_nd(vals, arr).eval()
# >> array([1, 2, 4, 5, 6, 8, 9], dtype=int32)

tf.boolean_mask

iterSession = tf.InteractiveSession()

vals = tf.constant([[1,2,3], [4,5,6], [7,8,9]])
arr = tf.constant([[-1 <= x - y <= 1 for x in range(3)] for y in range(3)])

arr.eval()
# array([[ True,  True, False],
#        [ True,  True,  True],
#        [False,  True,  True]], dtype=bool)

tf.boolean_mask(vals, arr).eval()
# array([ 1.,  2.,  4.,  5.,  6.,  8.,  9.], dtype=int32)