向量的torch.mean(data,0)和torch.mean(data)的不同行为

时间:2018-06-28 08:22:17

标签: python mean pytorch torch mnist

我很惊讶地发现torch.mean(data,0)和torch.mean(data)有不同的行为,其中“数据”是一维张量(向量,不是矩阵或其他东西):

from torchvision import datasets
import torch

path = './MNIST_data'

data = datasets.MNIST(path, train=True, download=True).train_data.view(-1).float()

print(torch.mean(data))
print(torch.mean(data, 0))

执行后的结果:

tensor(33.3184)
tensor(33.4961)

有人可以猜怎么回事吗?我认为结果应该相同。

1 个答案:

答案 0 :(得分:2)

示例可以帮助您清除疑问。

我们说我们有data = torch.Tensor([[1,2,3,4],[1,2,3,4]])

现在,当您执行torch.mean(data)时,它将对数据张量中的所有元素求和,然后除以该张量中的元素数量,得到2.5

的结果

对于torch.mean(data, 0)的操作,这将沿水平方向执行均值,这意味着它将采用第1行的第一个元素1,并采用第2行的第一个元素2,将它们相加向上并除以2。它有助于以这种方式可视化数据数组

[1, 2, 3, 4]
[1, 2, 3, 4]

如果您知道我们最终如何获得此张量,则最终结果将为[1, 2, 3, 4]的张量,您已经了解了区别。

希望可以清除它,如果您有任何疑问,请告诉我