torch.median

torch.median(input)Tensor

返回 input 中值的中位数。

注意

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

警告

此函数生成的(sub)梯度是确定性的,而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 上的索引。

默认情况下,dim 表示 input 张量的最后一个维度。

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

注意

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

警告

indices 不一定包含每个中位数值的第一次出现位置,除非该值是唯一的。具体的实现细节因设备而异。通常情况下,在 CPU 和 GPU 上运行时不要期待得到相同的结果。同样地,也不要期望梯度是确定性的。

参数
  • input (Tensor) – 需要输入的张量。

  • dim (int) - 需要减少的维度。

  • keepdim (bool) – 是否在输出张量中保留dim维度。

关键字参数

out ((Tensor, Tensor), 可选) – 第一个张量将被填充为中位数值,第二个张量(必须是 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]))
本页目录