在之前运算中,都是在相同形状的两个张量上执行按元素操作。在某些情况下,我们仍然可以通过调用 广播机制 (broadcasting mechanism) 来执行按元素操作
1、通过适当复制元素来扩展一个或两个数组,以便在转换之后,两个张量具有相同的形状
2、对生成的数组执行按元素操作。
a = torch.arange(3).reshape(3, 1)
b = torch.arange(2).reshape(1, 2)
a, b
#输出结果
(tensor([[0],
[1],
[2]]),
tensor([[0, 1]]))
由于 a
和 b
分别是 3×1和 1×2 矩阵,如果直接相加,它们的形状不匹配。我们将两个矩阵广播为一个更大的 3×2矩阵,如下所示:矩阵 a
将复制列,矩阵 b
将复制行,然后再按元素相加。.
c=a + b
print(a)
print(b)
print(c)
#输出结果
tensor([[0],
[1],
[2]])
tensor([[0, 1]])
tensor([[0, 1],
[1, 2],
[2, 3]])