2023-01-16 17:31:56 +08:00
|
|
|
|
mindspore.ops.topk
|
2022-07-22 17:08:36 +08:00
|
|
|
|
===================
|
|
|
|
|
|
|
2023-01-18 11:36:28 +08:00
|
|
|
|
.. py:function:: mindspore.ops.topk(input_x, k, dim=None, largest=True, sorted=True)
|
2022-07-22 17:08:36 +08:00
|
|
|
|
|
2023-01-16 17:31:56 +08:00
|
|
|
|
沿给定维度查找 `k` 个最大或最小元素和对应的索引。
|
2022-07-22 17:08:36 +08:00
|
|
|
|
|
|
|
|
|
|
.. warning::
|
2023-02-20 17:43:11 +08:00
|
|
|
|
- 如果 `sorted` 设置为False,它将使用aicpu运算符,性能可能会降低,另外,由于在不同平台上存在内存排布以及遍历方式不同等问题,`sorted` 设置为False时计算结果的显示顺序可能会出现不一致的情况。
|
2022-07-22 17:08:36 +08:00
|
|
|
|
|
2023-01-18 11:08:01 +08:00
|
|
|
|
如果 `input_x` 是一维Tensor,则查找Tensor中 `k` 个最大或最小元素,并将其值和索引输出为Tensor。`values[k]` 是 `input_x` 中 `k` 个最大元素,其索引是 `indices[k]` 。
|
2022-07-22 17:08:36 +08:00
|
|
|
|
|
2023-01-16 17:31:56 +08:00
|
|
|
|
对于多维矩阵,计算给定维度中最大或最小的 `k` 个元素,因此:
|
2022-07-22 17:08:36 +08:00
|
|
|
|
|
|
|
|
|
|
.. math::
|
2022-12-21 10:54:30 +08:00
|
|
|
|
values.shape = indices.shape
|
2022-07-22 17:08:36 +08:00
|
|
|
|
|
|
|
|
|
|
如果两个比较的元素相同,则优先返回索引值较小的元素。
|
|
|
|
|
|
|
2022-08-01 10:04:13 +08:00
|
|
|
|
参数:
|
|
|
|
|
|
- **input_x** (Tensor) - 需计算的输入,数据类型必须为float16、float32或int32。
|
2023-01-18 11:08:01 +08:00
|
|
|
|
- **k** (int) - 指定计算最大或最小元素的数量,必须为常量。
|
2022-12-21 10:54:30 +08:00
|
|
|
|
- **dim** (int, 可选) - 需要排序的维度。默认值:None。
|
2023-01-16 17:31:56 +08:00
|
|
|
|
- **largest** (bool, 可选) - 如果为False,则会返回前k个最小值。默认值:True。
|
2023-02-20 17:43:11 +08:00
|
|
|
|
- **sorted** (bool, 可选) - 如果为True,则获取的元素将按值降序排序。如果为False,则不对获取的元素进行排序。默认值:True。
|
2022-08-01 10:04:13 +08:00
|
|
|
|
|
|
|
|
|
|
返回:
|
2023-01-18 11:08:01 +08:00
|
|
|
|
由 `values` 和 `indices` 组成的tuple。
|
2022-08-01 10:04:13 +08:00
|
|
|
|
|
2023-01-16 17:31:56 +08:00
|
|
|
|
- **values** (Tensor) - 给定维度的每个切片中的 `k` 最大元素或最小元素。
|
2022-08-01 10:04:13 +08:00
|
|
|
|
- **indices** (Tensor) - `k` 最大元素的对应索引。
|
|
|
|
|
|
|
|
|
|
|
|
异常:
|
|
|
|
|
|
- **TypeError** - 如果 `sorted` 不是bool。
|
|
|
|
|
|
- **TypeError** - 如果 `input_x` 不是Tensor。
|
|
|
|
|
|
- **TypeError** - 如果 `k` 不是int。
|
|
|
|
|
|
- **TypeError** - 如果 `input_x` 的数据类型不是以下之一:float16、float32或int32。
|