PyTorch 中的奇怪行为

Strange behaviour in PyTorch

我开始学习 pyTorch recently.I 我喜欢从 Torch 社区搬过来 Python。

我在 pyTorch.Any 见解中遇到了这种奇怪的行为,我将不胜感激。

x=torch.Tensor(10,1).fill_(1)
y=torch.Tensor(10).fill_(2)
print(x.size())     #output is torch.Size([10, 1])
print(y.size())     #output is  torch.Size([10])
z=x+y
z.size()
z.size()            #output is torch.Size([10, 10])

z 的输出是 10 x 10,值为 3,这意味着它显然是在添加张量(我也检查了其他数字),然后用添加后的值构造一个 10 x 10 张量。

谁能解释一下为什么会这样。我在 Torch(Lua) 中尝试了它,它做了一个累积加法并返回了我期望的 Tensor。

当您在火炬张量之间进行 sum 时,广播 正在后台进行。这与您在使用 NumPy 进行加法运算时也会看到相同的行为。而且,PyTorch 仅遵循与 NumPy 相同的广播规则。

您可以在这里阅读和理解广播:NumPy Broadcasting

这是因为广播会在任何 pytorch 代码中自动发生。