我很惊讶地发现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)
有人可以猜怎么回事吗?我认为结果应该相同。
答案 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]
的张量,您已经了解了区别。
希望可以清除它,如果您有任何疑问,请告诉我