tf.nn.top_k()用法

tensorflow1.x:tf.nn.top_k()
tensorflow2.x:tf.math.top_k()

api功能为:
用于查找输入tensor的最大值。即输入tensor,沿着最后的一个维度独立查找k个最大元素,返回其值和索引下标。
函数参数列表为:
input, k=1, sorted=True, name=None

input是输入张量
k是需要查找的最大元素的个数
sorted如果为True则按照大小顺序排序
name名字

先总结在举例:
1.一定是沿着最后一个维度去搜索最大值;
2.返回两个,先返回搜索出来的最大值,再返回其索引;
3.最大值和索引是相同形状的。

用tf2举例说明:

1.一维
只有一个轴,只能在这个向量上搜索k个最大值

import tensorflow as tf
a = tf.constant([1,2,3,4,5,6])
b, c = tf.math.top_k(a,2)
print(b)
'''
打印输出:
<tf.Tensor: shape=(2,), dtype=int32, numpy=array([6, 5])>
'''
print(c)
'''
打印输出:
<tf.Tensor: shape=(2,), dtype=int32, numpy=array([5, 4])>
'''

2.二维
有两个轴,shape为(2,3),所以
第一回合(0,x),固定第一个维度为0,让最后一个轴x在0,1,2变化,搜索k个最大值
第二回合(1,x),固定第一个维度为1,让最后一个轴x在0,1,2变化,搜索k个最大值

import tensorflow as tf
a = tf.constant([[11,12,13],
                [21,22,23]])
b, c = tf.math.top_k(a,2)
print(b)
'''
打印输出:
<tf.Tensor: shape=(2, 2), dtype=int32, numpy=
array([[13, 12],
       [23, 22]])>
'''
print(c)
'''
打印输出:
<tf.Tensor: shape=(2, 2), dtype=int32, numpy=
array([[2, 1],
       [2, 1]])>
'''

3.三维
有三个轴,shape为(2,2,3),所以
第一回合(0,0,x),固定第一个轴为0,固定第二个轴为0,让最后一个轴在x,在0,1,2中变化,搜索k个最大值
第二回合(0,1,x),固定第一个轴为0,固定第二个轴为1,让最后一个轴在x,在0,1,2中变化,搜索k个最大值
第一回合(1,0,x),固定第一个轴为1,固定第二个轴为0,让最后一个轴在x,在0,1,2中变化,搜索k个最大值
第一回合(1,1,x),固定第一个轴为1,固定第二个轴为1,让最后一个轴在x,在0,1,2中变化,搜索k个最大值

import tensorflow as tf
a = tf.constant([
                 [[111,112,113],
                 [121,122,123]],

                 [[211,212,213],
                 [221,222,223]]
                 ])
b, c = tf.math.top_k(a,2)
print(b)
'''
打印输出:
<tf.Tensor: shape=(2, 2, 2), dtype=int32, numpy=
array([[[113, 112],
        [123, 122]],
       [[213, 212],
        [223, 222]]])>
'''
print(c)
'''
打印输出:
<tf.Tensor: shape=(2, 2, 2), dtype=int32, numpy=
array([[[2, 1],
        [2, 1]],
       [[2, 1],
        [2, 1]]])>
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值