张量排序

简介: 【8月更文挑战第16天】张量排序。

张量排序
TensorFlow中,张量排序的操作主要包括:
tf.sort():按照升序或者降序对张量进行排序,返回排序后的张量。
tf.argsort():按照升序或者降序对张量进行排序,但返回的是索引。
tf.nn.top_k():返回前k个最大值。
tf.sort/argsort(input, direction, axis):
input:输入张量;
direction:排列顺序,可为DESCENDING 降序或者ASCENDING(升序)。默认为ASCENDING(升序);
axis:按照axis维度进行排序。默认 axis=-1 最后一个维度。

代码:
sort_sample_1 = tf.random.shuffle(tf.range(10))
print("输入张量:",sort_sample_1.numpy())
sorted_sample_1 = tf.sort(sort_sample_1, direction="ASCENDING")
print("生序排列后的张量:",sorted_sample_1.numpy())
sorted_sample_2 = tf.argsort(sort_sample_1,direction="ASCENDING")
print("生序排列后,元素的索引:",sorted_sample_2.numpy())

输出:
输入张量: [1 8 7 9 6 5 4 2 3 0]
生序排列后的张量: [0 1 2 3 4 5 6 7 8 9]
生序排列后,元素的索引: [9 0 7 8 6 5 4 2 1 3]

tf.nn.top_k(input,K,sorted=TRUE):
input:输入张量;
K:需要输出的前k个值及其索引。
sorted: sorted=TRUE表示升序排列;sorted=FALSE表示降序排列。

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

代码:
values, index = tf.nn.top_k(sort_sample_1,5)
print("输入张量:",sort_sample_1.numpy())
print("升序排列后的前5个数值:", values.numpy())
print("升序排列后的前5个数值的索引:", index.numpy())

输出:
输入张量: [1 8 7 9 6 5 4 2 3 0]
升序排列后的前5个数值: [9 8 7 6 5]
升序排列后的前5个数值的索引: [3 1 2 4 5]

目录
相关文章
|
2月前
|
TensorFlow 算法框架/工具 索引
张量排序
【8月更文挑战第17天】张量排序。
14 1
|
3月前
|
定位技术
稀疏数组
稀疏数组
|
5月前
|
人工智能 算法 数据可视化
【算法训练-数组 五】【数组组合】:下一个排列
【算法训练-数组 五】【数组组合】:下一个排列
39 0
|
存储 NoSQL
第3章 数组与矩阵——3.5 稀疏矩阵
第3章 数组与矩阵——3.5 稀疏矩阵
|
机器学习/深度学习 存储 并行计算
【Pytorch】Tensor的分块、变形、排序、极值与in-place操作
【Pytorch】Tensor的分块、变形、排序、极值与in-place操作
506 0
|
并行计算 安全 异构计算
pytroch取张量数据
pytroch取张量数据
175 1
pytroch取张量数据
|
PyTorch 算法框架/工具
torch,如何将两个二维张量,按照第一维度,合并
在这个例子中,torch.cat() 函数的第一个参数是一个列表,包含要拼接的张量 x 和 y,第二个参数是拼接的维度,即第一维度。拼接后的张量 z 的形状为 (6, 4),因为两个原始张量的第一维度都是 3,拼接后就变成了 6。
698 0
torch,把张量里面小于0的元素,全部变成0
您可以使用torch.clamp(input, min, max)函数来将张量中小于0的元素变成0。 以下是一个示例代码:
1029 0
|
PyTorch 算法框架/工具 索引
pytorch中,假设已经有了一个张量a,现在还有一个张量B,张量B为一维的张量,如何利用B张量的元素作为索引去检索a张量的元素?
可以使用PyTorch的索引操作符[]和张量的gather()方法来利用张量B的元素作为索引来检索张量a的元素。
209 0