我最近开始学习pyTorch。因为我喜欢Python,所以我从Torch社区迁移。
我在pyTorch中遇到了这种奇怪的行为。任何见解为什么会发生这种情况会受到赞赏。
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,这意味着它显然添加了Tensors(我还检查了其他数字),然后使用添加后的值构建10 x 10 Tensor。
有人可以解释我为什么会这样。我在Torch(Lua)尝试过它累积添加并返回我预期的Tensor。
当你在火炬传感器之间进行sum
时,广播正在后台进行。当您使用NumPy进行添加时,您也会看到相同的行为。并且,PyTorch只遵循NumPy中遵循的相同广播规则。
你可以在这里阅读和理解广播:NumPy Broadcasting
这是因为在任何pytorch代码中自动发生的广播。