diff --git a/doc/fluid/api_cn/layers_cn/topk_cn.rst b/doc/fluid/api_cn/layers_cn/topk_cn.rst index 0cb245dff4c4d93bfb004718d4643fe63d4c0db9..15c3c65c24281120f31de8522c13e01283dce53c 100644 --- a/doc/fluid/api_cn/layers_cn/topk_cn.rst +++ b/doc/fluid/api_cn/layers_cn/topk_cn.rst @@ -4,43 +4,46 @@ topk ------------------------------- .. py:function:: paddle.fluid.layers.topk(input, k, name=None) -这个算子用于查找最后一维的前k个最大项,返回它们的值和索引。 +此OP用于查找输入Tensor的最后一维的前k个最大项,返回它们的值和索引。 +如果输入是1-D Tensor,则找到Tensor的前k个最大项,并输出前k个最大项的值和索引。如果输入是更高阶的Tensor,则该OP会基于最后一维计算前k项。 -如果输入是(1-D Tensor),则找到向量的前k最大项,并以向量的形式输出前k最大项的值和索引。values[j]是输入中第j最大项,其索引为indices[j]。 -如果输入是更高阶的张量,则该operator会基于最后一维计算前k项 - -例如: - -.. code-block:: text +- 例1: +.. code-block:: python - 如果: - input = [[5, 4, 2, 3], - [9, 7, 10, 25], - [6, 2, 10, 1]] + 输入: + input.shape = [3, 4] + input.data = [[5, 4, 2, 3], + [9, 7, 10, 25], + [6, 2, 10, 1]] k = 2 - 则: + 输出: 第一个输出: - values = [[5, 4], - [10, 25], - [6, 10]] + values.shape = [3, 2] + values.data = [[5, 4], + [10, 25], + [6, 10]] 第二个输出: - indices = [[0, 1], - [2, 3], - [0, 2]] + indices.shape = [3, 2] + indices.data = [[0, 1], + [2, 3], + [0, 2]] + 参数: - - **input** (Variable)-输入变量可以是一个向量或者更高阶的张量 - - **k** (int|Variable)-在输入最后一维中寻找的前项数目 - - **name** (str|None)-该层名称(可选)。如果设为空,则自动为该层命名。默认为空 + - **input** (Variable) - 输入的Tensor,支持的数据类型: float32,float64。 + - **k** (int|Variable) - 指定在输入Tensor最后一维中寻找最大前多少项。 + - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 -返回:含有两个元素的元组。元素都是变量。第一个元素是最后维切片的前k项。第二个元素是输入最后维里值索引 +返回: + - ``values``: 输入Tensor最后维切片的最大前k项。数据类型同输入Tensor一致。Tensor维度等于 :math:`input.shape[:-1]+ [k]` 。 -返回类型:元组[变量] + - ``indices``: 输入Tensor最后维切片最大前k项值的索引,数据类型为int64,维度同values的维度。 -抛出异常: ``ValueError`` - 如果k<1或者k不小于输入的最后维 +抛出异常: + - ``ValueError`` : 如果k<1或者k大于输入的最后维。 **代码示例**: @@ -49,8 +52,16 @@ topk import paddle.fluid as fluid import paddle.fluid.layers as layers input = layers.data(name="input", shape=[13, 11], dtype='float32') - top5_values, top5_indices = layers.topk(input, k=5) + top5_values, top5_indices = layers.topk(input, k=5) #top5_values.shape=[13, 5],top5_indices.shape=[13, 5] + + # 1D Tensor + input = layers.data(name="input", shape=[13], dtype='float32') + top5_values, top5_indices = layers.topk(input, k=5) #top5_values.shape=[5],top5_indices.shape=[5] + # k=Variable + input = layers.data(name="input", shape=[13, 11], dtype='float32') + vk = layers.data(name="vk", shape=[1], dtype='int32') # 把k值保存在vk.data[0]中 + vk_values, vk_indices = layers.topk(input, k=vk) #vk_values.shape=[13, k],vk_indices.shape=[13, k]