PyTorch中topk函数的用法详解

  

听名字就知道这个函数是用来求张量中某个昏暗的前k大或者前k小的值以及对应的指数。

  

<强>用法

        火炬。topk(输入、k昏暗=None,最大=True,排序=True,=None)→(张量,LongTensor)      

输入:一个张量数据

  

k:指明是得到前k个数据以及其指数

  

暗:指定在哪个维度上排序,默认是最后一个维度

  

最大:如果为真实的,按照大到小排的序,如果为假,按照小到大排序

  

排序:返回的结果按照顺序返回

  

:可缺省,不要

  

topk最常用的场合就是求一个样本被网络认为前k个最可能属于的类别。我们就用这个场景为例,说明函数的使用方法。

  

假设一个 PyTorch中topk函数的用法详解”>,N是样本数目,一般等于批量大小,D是类别数目。我们想知道每个样本的最可能属于的那个类别,其实可以用torch.max得到。如果要使用topk,则k应该设置为1 . </p>
  
  <pre类=   进口火炬      pred=火炬。randn ((4、5))   打印(pred)   值,指数=pred。topk(最大1暗=1=True,排序=True)   打印(指数)   #用最大得到的结果,设置keepdim为真的,避免降维。因为topk函数返回的指数不降维,形状和输入一致。   _,indices_max=pred。max(暗=1,keepdim=True)      打印(indices_max==指数)   # pred   张量([[-0.1480,-0.9819,-0.3364,0.7912,-0.3263),   (-0.8013,-0.9083,0.7973,0.1458,-0.9156),   (-0.2334,-0.0142,-0.5493,0.0673,0.8185),   (-0.4075,-0.1097,0.8193,-0.2352,-0.9273]])   1 #指数、形状为【4】,   张量([[3]#【0 0】代表第一个样本最可能属于第一类别   [2]1 #【0】代表第二个样本最可能属于第二类别   [4],   [2]])   # indices_max等于指数   张量([(真正的),   (真正的),   (真正的),   [事实]])   之前      

<强>现在在尝试一下k=2

        进口火炬      pred=火炬。randn ((4、5))   打印(pred)   值,指数=pred。topk(最大2暗=1=True,排序=True) # k=2   打印(指数)   # pred   张量([[-0.2203,-0.7538,1.8789,0.4451,-0.2526),   (-0.0413,0.6366,1.1155,0.3484,0.0395),   (0.0365,0.5158,1.1067,-0.9276,-0.2124),   (0.6232,0.9912,-0.8562,0.0148,1.6413]])   #指数   张量([[2、3],   (2,1),   (2,1),   [4 1]])   之前      

可以发现指数的形状变成了【4 k, k=2。

  

其中指数[0]=[2、3]。其意义是说明第一个样本的前两个最大概率对应的类别分别是第3类和4类第。

  

大家可以自打印一行下值。可以发现价值观的塑造和指数的形状是一样的.indices描述了在价值观中对应的值在pred中的位置。

  

以上这篇PyTorch中topk函数的用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

PyTorch中topk函数的用法详解