我最近开始学习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,这意味着它显然添加了张量(我还检查了其他数字),然后在添加后使用值构建10 x 10 Tensor。
有人可以解释我为什么会这样。我在Torch(Lua)尝试了它累积添加并返回我预期的Tensor。
答案 0 :(得分:0)
当您在火炬传感器之间执行sum
时,广播正在后台进行。当您使用NumPy进行添加时,您也会看到相同的行为。并且,PyTorch只遵循NumPy中遵循的相同广播规则。
您可以在此处阅读和理解广播:NumPy Broadcasting
答案 1 :(得分:0)
这是因为广播在任何pytorch代码中自动发生。