评价此页

torch.median#

torch.median(input) Tensor#

返回 input 中所有元素的中位数。

注意

对于元素个数为偶数的 input 张量,中位数并不唯一。在这种情况下,返回两个中位数中较小的一个。若要计算两个中位数的平均值,请使用 torch.quantile() 并设置 q=0.5

警告

median(dim=0) 不同,此函数会产生确定性的(次)梯度。

参数:

input (Tensor) – 输入张量。

示例

>>> a = torch.randn(1, 3)
>>> a
tensor([[ 1.5219, -1.5212,  0.2202]])
>>> torch.median(a)
tensor(0.2202)
torch.median(input, dim=-1, keepdim=False, *, out=None)

返回一个命名元组 (values, indices),其中 values 包含 input 在维度 dim 上每一行的中位数,indices 包含在维度 dim 上找到的中位数的索引。

默认情况下,diminput 张量的最后一个维度。

如果 keepdimTrue,输出张量的大小与 input 相同,但在维度 dim 上大小为 1。否则,dim 将被压缩(参见 torch.squeeze()),导致输出张量的维度比 input 少一个。

注意

对于在维度 dim 上元素个数为偶数的 input 张量,中位数并不唯一。在这种情况下,返回两个中位数中较小的一个。若要计算 input 中两个中位数的平均值,请使用 torch.quantile() 并设置 q=0.5

警告

indices 不一定包含找到的每个中位数值的首次出现位置(除非该值是唯一的)。具体的实现细节与设备有关。通常不要指望在 CPU 和 GPU 上运行时获得相同的结果。出于同样的原因,也不要指望梯度是确定性的。

参数:
  • input (Tensor) – 输入张量。

  • dim (int, optional) – 要约简的维度。如果为 None,则约简所有维度。

  • keepdim (bool, optional) – 输出张量是否保留 dim。默认为 False

关键字参数:

out ((Tensor, Tensor), optional) – 第一个张量将填充中位数值,第二个张量(数据类型必须为 long)将填充它们在 inputdim 维度上的索引。

示例

>>> a = torch.randn(4, 5)
>>> a
tensor([[ 0.2505, -0.3982, -0.9948,  0.3518, -1.3131],
        [ 0.3180, -0.6993,  1.0436,  0.0438,  0.2270],
        [-0.2751,  0.7303,  0.2192,  0.3321,  0.2488],
        [ 1.0778, -1.9510,  0.7048,  0.4742, -0.7125]])
>>> torch.median(a, 1)
torch.return_types.median(values=tensor([-0.3982,  0.2270,  0.2488,  0.4742]), indices=tensor([1, 4, 4, 3]))