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 代码中自动发生。
我开始学习 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 代码中自动发生。