假设我有一个值为[0,4,1,2,8,7,0,2]
的向量,如何在 tensorflow 中得到前k个值(k = 3)[0,1,0,0,1,1,0,0]
的二进制向量?>
答案 0 :(得分:1)
TensorFlow的tf.math.top_k
将为您找到值。但是要获得二进制掩码,您需要tf.scatter_nd
。
此代码必须适用于该任务:
x = tf.convert_to_tensor([0,4,1,2,8,7,0,2])
_, indices = tf.math.top_k(x, k=3)
result = tf.scatter_nd(tf.expand_dims(indices, 1), tf.ones_like(indices), tf.shape(x))
输出:
<tf.Tensor: id=47, shape=(8,), dtype=int32, numpy=array([0, 1, 0, 0, 1, 1, 0, 0], dtype=int32)>
请注意,在v1.13之前,top_k
操作在tf.nn.top_k
下:
_, indices = tf.nn.top_k(x, k=3)