torch.mean是对torch.Tensor取均值。具体怎么使用,请看下面的例子

不指定维度求均值

如果不指定维度,是对Tensor里所有元素求均值,最后计算出来的结果是一个标量。

a = torch.Tensor([0, 1, 2, 3, 4, 5]).view(2, 3, 1)
print(a)

mean = torch.mean(a)
print(mean, mean.shape)

结果如下:
结果

指定其中一维

如果指定了某一维度,那么剩下的所有元素算均值。
下面的例子是对(2,3,1)Tensor的0维做均值,N=2,即所选的dim,输出为剩下的维度(3,1)
第一个:(0+3)/2=1.5
第二个: (1+4)/2=2.5
第三个: (2+5)/2=3.5

a = torch.Tensor([0, 1, 2, 3, 4, 5]).view(2, 3, 1)
print(a)

mean = torch.mean(a, 0)
print(mean, mean.shape)

计算结果

例子2

如下对dim 1做mean

N=3,即所选的dim,输出为剩下的维度(2,1)
第一个:(0+1+2)/3=1
第二个: (3+4+5)/3=4

a = torch.Tensor([0, 1, 2, 3, 4, 5]).view(2, 3, 1)
print(a)

mean = torch.mean(a, 1)
print(mean, mean.shape)

计算结果

例子3

如下对dim 2做mean

N=1,即所选的dim,输出为剩下的维度(3,2)
[0][0]:(0)/1=0
[0][1]:(1)/1=1
[1][0]:(2)/1=2
[1][1]:(3)/1=3
[2][0]:(4)/1=4
[2][1]:(5)/1=5

a = torch.Tensor([0, 1, 2, 3, 4, 5]).view(2, 3, 1)
print(a)

mean = torch.mean(a, 2)
print(mean, mean.shape)

指定多维

其实跟指定一个维度一样,下面如例子

dim=(1,2)
那么N = 2*3 = 6, 输出为(1,)

[0]=(0+1+2+3+4+5)/6 = 2.5

a = torch.Tensor([0, 1, 2, 3, 4, 5]).view(2, 3, 1)
print(a)

mean = torch.mean(a, (0,1))
print(mean, mean.shape)

计算结果

如果需要保持维度,这里的输入为三个维度,那么保持维度的意思就是输出也是三个维度。
那么可以加入keepdim=True,
如下:

a = torch.Tensor([0, 1, 2, 3, 4, 5]).view(2, 3, 1)
print(a)

mean = torch.mean(a, (0,1), keepdim=True)
print(mean, mean.shape)

结果

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐