评价此页

torch.median#

torch.median(input) Tensor#

返回 input 中值的中位数。

注意

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

警告

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 包含 inputdim 维度上每行的中位数,而 indices 包含在 dim 维度上找到的中位数值的索引。

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

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

注意

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

警告

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]))