在之前运算中,都是在相同形状的两个张量上执行按元素操作。在某些情况下,我们仍然可以通过调用 广播机制 (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]])