在numpy中,具有两个相同形状的数组x
和y
,可以像y[x > 1]
这样进行切片。如何在 tensorflow 中获得相同的结果? y[tf.greater(x, 1)]
不起作用,并且tf.slice
也不支持任何此类功能。现在有没有一种方法可以使用 bool 张量进行索引,或者目前不支持该方法?
最佳答案
尝试:
ones = tf.ones_like(x) # create a tensor all ones
mask = tf.greater(x, ones) # boolean tensor, mask[i] = True iff x[i] > 1
slice_y_greater_than_one = tf.boolean_mask(y, mask)
参见tf.boolean_mask
编辑:另一种(更好的?)方法:
import tensorflow as tf
x = tf.constant([1, 2, 0, 4])
y = tf.Variable([1, 2, 0, 4])
mask = x > 1
slice_y_greater_than_one = tf.boolean_mask(y, mask)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print (sess.run(slice_y_greater_than_one)) # [2 4]
关于python - 使用 bool 张量的Tensorflow索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33769041/