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上找到的中位数的索引。默认情况下,
dim是input张量的最后一个维度。如果
keepdim为True,输出张量的大小与input相同,但在维度dim上大小为 1。否则,dim将被压缩(参见torch.squeeze()),导致输出张量的维度比input少一个。注意
对于在维度
dim上元素个数为偶数的input张量,中位数并不唯一。在这种情况下,返回两个中位数中较小的一个。若要计算input中两个中位数的平均值,请使用torch.quantile()并设置q=0.5。警告
indices不一定包含找到的每个中位数值的首次出现位置(除非该值是唯一的)。具体的实现细节与设备有关。通常不要指望在 CPU 和 GPU 上运行时获得相同的结果。出于同样的原因,也不要指望梯度是确定性的。- 参数:
- 关键字参数:
out ((Tensor, Tensor), optional) – 第一个张量将填充中位数值,第二个张量(数据类型必须为 long)将填充它们在
input的dim维度上的索引。
示例
>>> 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]))