PyTorch中是否有与Tensorflow的tf.contrib.distributions.percentile功能相同的函数?
tf.contrib.distributions.percentile
ctehm74n1#
有趣的是,PyTorch似乎没有为此提供任何操作符,至少没有根据它的搜索功能。不过幸运的是,PyTorch Tensors可以很容易地与NumPy函数一起使用,这样你就可以简单地调用numpy.percentile,见下面的例子:
numpy.percentile
import torch as t import numpy as np x = t.Tensor([1,2,3]) print(np.percentile(x, 30)) # 30-th percentile of x # 1.6
8fq7wneg2#
实际上,icdf函数给出了反累积密度函数值,即百分位值。
icdf
import torch from torch.distributions import Normal dist = Normal(torch.tensor([0.0]), torch.tensor([1.0])) dist.icdf(torch.tensor([0.95])).data.numpy()
导致
array([1.6449], dtype=float32)
njthzxwz3#
我不知道赞成和反对,但有方法使用cupy与pytorch的dlpack:(cupy不直接支持pytorchTensor,CuPy函数不接受torchTensor。)
import torch from torch.utils.dlpack import to_dlpack from torch.utils.dlpack import from_dlpack import cupy x = torch.Tensor([1, 2, 3]).cuda() dx = to_dlpack(x) cx = cupy.fromDlpack(dx) print(cupy.percentile(cx, 30)) # 30-th percentile of x # 1.5999999642372131
monwx1rj4#
PyTorch的分位数its own implementation与numpy.quantile类似,本质上是analogous to the percentile,但使用十进制值而不是百分位数。例如,可以按如下方式计算Tensor的第50百分位数:
numpy.quantile
import torch input = torch.tensor([1., 2., 3., 4., 5.]) print(torch.quantile(input, 0.5)) # 50-th percentile # tensor(3.)
4条答案
按热度按时间ctehm74n1#
有趣的是,PyTorch似乎没有为此提供任何操作符,至少没有根据它的搜索功能。
不过幸运的是,PyTorch Tensors可以很容易地与NumPy函数一起使用,这样你就可以简单地调用
numpy.percentile
,见下面的例子:8fq7wneg2#
实际上,
icdf
函数给出了反累积密度函数值,即百分位值。导致
njthzxwz3#
我不知道赞成和反对,但有方法使用cupy与pytorch的dlpack:
(cupy不直接支持pytorchTensor,CuPy函数不接受torchTensor。)
monwx1rj4#
PyTorch的分位数its own implementation与
numpy.quantile
类似,本质上是analogous to the percentile,但使用十进制值而不是百分位数。例如,可以按如下方式计算Tensor的第50百分位数: