PyTorch 中 Tensor Broadcasting 详解

PyTorch入门实战教程

Broadcasting 是指,在运算中,不同大小的两个 array 应该怎样处理的操作。通常情况下,小一点的数组会被 broadcast 到大一点的,这样才能保持大小一致。Broadcasting 过程中的循环操作都在 C 底层进行,所以速度比较快。但也有一些情况下 Broadcasting 会带来性能上的下降。

两个 Tensors 只有在下列情况下才能进行 broadcasting 操作:

  • 每个 tensor 至少有一维
  • 遍历所有的维度,从尾部维度开始,每个对应的维度大小要么相同,要么其中一个是 1,要么其中一个不存在

让我们来看一些代码示例。

如果两个 tensors 可以 broadcasting,那么计算过程是这样的:

  • 如果 x 和 y 的维度不同,那么对于维度较小的 tensor 的维度补 1,使它们维度相同。
  • 然后,对于每个维度,计算结果的维度值就是 x 和 y 中较大的那个值。
来看一个不对的例子:
报错:
注意报错提示说:在 non-singleton 维度上,tensor a 和 b 的 维度应该相同。

PyTorch入门实战教程
除特别注明外,本站所有文章均为 PyTorch 中文网原创,转载请注明出处:https://www.pytorchtutorial.com/pytorch-tensor-broadcasting/

Leave a Reply

Your email address will not be published. Required fields are marked *

返回顶部