tensorflow - 向量中的前 k 个值到二进制向量 [英] tensorflow - top k values in vector to binary vector
本文介绍了tensorflow - 向量中的前 k 个值到二进制向量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设我有一个带有值 [0,4,1,2,8,7,0,2]
的向量,我如何获得前 k 个值的二进制向量(k =3)tensorflow中的[0,1,0,0,1,1,0,0]
?
Say I had a vector with values [0,4,1,2,8,7,0,2]
, how can I get a binary vector of the top k values (k = 3) [0,1,0,0,1,1,0,0]
in tensorflow?
推荐答案
TensorFlow 的 tf.math.top_k
将为您找到值.但是要获得二进制掩码,您需要 tf.scatter_nd
.
The TensorFlow's tf.math.top_k
will find the values for you. But to obtain a binary mask, you need tf.scatter_nd
.
此代码必须适用于任务:
This code must work for the task:
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
下:
Please note, that before v1.13, the top_k
operation is under tf.nn.top_k
:
_, indices = tf.nn.top_k(x, k=3)
这篇关于tensorflow - 向量中的前 k 个值到二进制向量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文