评价此页

torch.nanmean#

torch.nanmean(input, dim=None, keepdim=False, *, dtype=None, out=None) Tensor#

计算沿指定维度的所有非NaN元素的平均值。输入必须是浮点数或复数。

input张量中没有NaN值时,此函数与torch.mean()相同。当存在NaN值时,torch.mean()会将NaN传播到输出,而torch.nanmean()会忽略NaN值(torch.nanmean(a)等价于torch.mean(a[~a.isnan()]))。

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

参数
  • input (Tensor) – 输入张量,可以是浮点数或复数类型

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

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

关键字参数
  • dtype (torch.dtype, optional) – 返回张量的期望数据类型。如果指定,输入张量将在执行操作之前转换为dtype。这对于防止数据类型溢出很有用。默认为None。

  • out (Tensor, optional) – 输出张量。

另请参阅

torch.mean() 计算平均值,会传播NaN

示例

>>> x = torch.tensor([[torch.nan, 1, 2], [1, 2, 3]])
>>> x.mean()
tensor(nan)
>>> x.nanmean()
tensor(1.8000)
>>> x.mean(dim=0)
tensor([   nan, 1.5000, 2.5000])
>>> x.nanmean(dim=0)
tensor([1.0000, 1.5000, 2.5000])

# If all elements in the reduced dimensions are NaN then the result is NaN
>>> torch.tensor([torch.nan]).nanmean()
tensor(nan)