tensorflow - 向量中的前 k 个值到二进制向量 [英] tensorflow - top k values in vector to binary vector

查看:19
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆