PyTorch中的奇怪行为

我最近开始学习PyTorch。由于我喜欢Python,我从Torch社区转过来了。

我在PyTorch中遇到了这种奇怪的行为。如果您知道为什么会发生这种情况,我会非常感激。

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

z的输出结果是一个10x10的张量,其值为3,这意味着它明显在添加张量(我还尝试与其他数字验证),然后构造一个10x10的张量,其中包含添加后的值。

有人能够解释为什么会发生这种情况吗?我在Torch (Lua)中尝试过它,它进行了累计加法并返回了我期望的张量。

点赞
用户2956066
用户2956066

当你在torch张量之间执行sum时,广播会在后台发生。这与你使用NumPy进行加法时看到的行为相同。而PyTorch只是遵循与NumPy相同的广播规则。

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

2017-12-26 09:29:45
用户5866657
用户5866657

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

2017-12-26 22:39:28