broadcast_tensors

paddle. broadcast_tensors ( input, name=None ) [源代码]

根据 Broadcast 规范对一组输入张量进行广播操作。

本 API 支持两种调用方式:

  1. Paddle 风格: paddle.broadcast_tensors(input, name=None) 使用张量序列作为输入。

  2. PyTorch 风格: paddle.broadcast_tensors(*tensors) 使用可变数量的张量参数。

备注

如想了解更多 Broadcasting 内容,请参见 Tensor 介绍 .

下图展示将三个 Tensor 广播到同一维度的过程。三个 Tensor 的尺寸分别为 [4, 1, 3]、[2, 3]、[4, 2, 1],在广播时,会从最后一个维度开始对齐,对于每一个维度,任意两个 Tensor 的在该维度大小相等;或者其中一个 Tensor 的维度等于 1;或者其中一个 Tensor 的维度不存在。

在下图中,

  • 最后一个维度中,Tenser3 取值为 1,Tensor1 和 Tensor2 取值为 3,所有 Tensor 的该维度被扩张为 3;

  • 倒数第二个维度中,Tenser1 取值为 1,Tensor2 和 Tensor3 取值为 2,所有 Tensor 的该维度被扩张为 2;

  • 倒数第三个维度中,Tenser2 为空,Tensor1 和 Tensor3 取值为 4,所有 Tensor 的该维度被扩张为 4。

最终,所有 Tensor 都被扩张到 [4, 2, 3]。

Broadcast 图示

参数

  • input (list(Tensor)|tuple(Tensor)) - 张量列表或张量元组,数据类型为: bool、 float32、 float64、 complex64、 complex128、 int32 或 int64。所有的输入 Tensor 均需要满足 rank <= 5。

  • name (str,可选) - 具体用法请参见 api_guide_Name,一般无需设置,默认值为 None。

返回

list(Tensor),一组 Broadcast 后的 Tensor,其顺序与 input 一一对应。

代码示例

>>> import paddle
>>> x1 = paddle.rand([1, 2, 3, 4]).astype('float32')
>>> x2 = paddle.rand([1, 2, 1, 4]).astype('float32')
>>> x3 = paddle.rand([1, 1, 3, 1]).astype('float32')
>>> out1, out2, out3 = paddle.broadcast_tensors(input=[x1, x2, x3])
>>> # out1, out2, out3: tensors broadcasted from x1, x2, x3 with shape [1,2,3,4]