tensorflow对数组排序

有时我们会遇到tensor域下的数组排序,比如按照一定规则对输入排序。

import tensorflow as tf
import numpy as np

a = tf.placeholder(tf.int32, shape=(3,2))


# bb = tf.constant(a) # the array
reordered = tf.gather(a, tf.nn.top_k(a[:, 0], k=3).indices)   # 按照输入的第一个维度排序,选取top3的值
value_ = tf.nn.top_k(a[:, 0], k=3).values
indices_ = tf.nn.top_k(a[:, 0], k=3).indices
'''
tf.nn.top_k(
    input,
    k=1,
    sorted=True,
    name=None
)
top_k返回值:
top_k(...).values: The k largest elements along each last dimensional slice.(返回对应的值)
top_k(...).indices: The indices of values within the last dimension of input(返回索引)

-----------------
tf.gather(
    params,
    indices,
    validate_indices=None,
    name=None,
    axis=0
)
根据对应索引indices把对应元素取出来
'''
 

feed_dict = {a:np.array([[1, 2], [3, 4], [2, 2]])}
sess = tf.Session()
_in, out, v, i = sess.run([a, reordered, value_, indices_], feed_dict=feed_dict)
print('in:\n',_in, '\nout:\n', out, '\nvalue:\n', v, '\nindices:\n', i)
'''
>>>in:
 [[1 2]
 [3 4]
 [2 2]]
out:
 [[3 4]
 [2 2]
 [1 2]]
value:
 [3 2 1]
indices:
 [1 2 0]

'''
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值