python – 使用布尔张量的Tensorflow索引

在numpy中,使用两个相同形状的数组x和y,可以像这样进行切片y [x> 1].你如何在张量流中获得相同的结果? y [tf.greater(x,1)]不起作用,tf.slice也不支持这样的任何东西.有没有办法立即用布尔张量索引或者当前是不支持的?

解决方法:

尝试:

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]
上一篇:c – 重载括号运算符[]以获取和设置


下一篇:python – 在numpy中创建外部产品数组