tf.nn.top_k()

参考  tf.nn.top_k() - 云+社区 - 腾讯云

一、函数原型

tf.nn.top_k(
    input,
    k=1,
    sorted=True,
    name=None
)

为了找到输入的张量的最后的一个维度的最大的k个值和它的下标!

如果输入的是一个向量,也就是rank=1,找到最大的k个数在这个向量,则输出最大的k个数字和最大的这k个数字的下标。如果输入的张量是一个更高rank的矩阵,那么我们只要找到每一行的最大的k个数字,以及他们的下标。如果两个元素相同,那么低一点的下标先出现。

参数:

  • input:输入的tensor,不能是array这些啊!要么输入1-D,要是更高维度必须保证最后的一个维度长度必须大于等于K
  • k:0-D的int32的数字张量。
  • sorted:如果sorted=True,那么选出来的k个数字就需要按照降序的顺序排序
  • name:可选项,也就是这个操作的名字

返回:

  • values:也就是每一行的最大的k个数字
  • indices:这里的下标是在输入的张量的最后一个维度的下标

二、例子

import tensorflow as tf
import numpy as np
     
#选出每一行的最大的前两个数字
#返回的是最大的k个数字,同时返回的是最大的k个数字在最后的一个维度的下标
a=tf.constant(np.random.rand(3,4))
b=tf.nn.top_k(a,k=2)
with tf.Session() as sess:
    print(sess.run(a))
    print(sess.run(b))


Output:

    [[0.73731748 0.13455566 0.20236765 0.92909052]
     [0.7923021  0.46949081 0.31521194 0.2999236 ]
     [0.19102823 0.01301476 0.70615716 0.68501807]]
    TopKV2(values=array([[0.92909052, 0.73731748],
           [0.7923021 , 0.46949081],
           [0.70615716, 0.68501807]]), indices=array([[3, 0],
           [0, 1],
           [2, 3]], dtype=int32))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wanderer001

ROIAlign原理

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值