0°

PyTorch 中 Tensor Broadcasting 详解

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

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

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

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

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

  • 如果 x 和 y 的维度不同,那么对于维度较小的 tensor 的维度补 1,使它们维度相同。
  • 然后,对于每个维度,计算结果的维度值就是 x 和 y 中较大的那个值。

来看一个不对的例子:

报错:

注意报错提示说:在 non-singleton 维度上,tensor a 和 b 的 维度应该相同。

PyTorch入门实战教程
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论