PyTorch中的奇怪行为

时间:2017-12-18 18:16:11

标签: python lua torch pytorch

我最近开始学习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。

2 个答案:

答案 0 :(得分:0)

当您在火炬传感器之间执行sum时,广播正在后台进行。当您使用NumPy进行添加时,您也会看到相同的行为。并且,PyTorch只遵循NumPy中遵循的相同广播规则。

您可以在此处阅读和理解广播:NumPy Broadcasting

答案 1 :(得分:0)

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