multiplex

paddle.multiplex ( inputs, index, name ) [源代码]

根据给定的index参数,该OP从每个输入Tensor中选择特定行构造输出Tensor。

设该OP输入包含

multiplex - 图1

个Tensor,其中

multiplex - 图2

代表第i个输入Tensor,

multiplex - 图3

处于区间

multiplex - 图4

设该OP输出为 OO ,其中 O[i]O[i] 为输出的第i行,则输出满足: O[i]\=Iindex[i][i]O[i]\=Iindex[i][i]

示例:

  1. # 输入为4个shape为[4,4]的Tensor
  2. inputs = [[[0,0,3,4], [0,1,3,4], [0,2,4,4], [0,3,3,4]],
  3. [[1,0,3,4], [1,1,7,8], [1,2,4,2], [1,3,3,4]],
  4. [[2,0,3,4], [2,1,7,8], [2,2,4,2], [2,3,3,4]],
  5. [[3,0,3,4], [3,1,7,8], [3,2,4,2], [3,3,3,4]]]
  6. # index为shape为[4,1]的Tensor
  7. index = [[3],[0],[1],[2]]
  8. # 输出shape为[4,4]
  9. out = [[3,0,3,4] // out[0] = inputs[index[0]][0] = inputs[3][0] = [3,0,3,4]
  10. [0,1,3,4] // out[1] = inputs[index[1]][1] = inputs[0][1] = [0,1,3,4]
  11. [1,2,4,2] // out[2] = inputs[index[2]][2] = inputs[1][2] = [1,2,4,2]
  12. [2,3,3,4]] // out[3] = inputs[index[3]][3] = inputs[2][3] = [2,3,3,4]

参数:

  • inputs (list) - 为输入Tensor列表,列表元素为数据类型为float32,float64,int32,int64的多维Tensor。所有输入Tensor的shape应相同,秩必须至少为2。

  • index (Tensor)- 用来选择输入Tensor中的某些行构建输出Tensor的索引,为数据类型为int32或int64、shape为[M, 1]的2-D Tensor,其中M为输入Tensor个数。

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

返回:Tensor, 进行Multiplex运算后的输出Tensor。

代码示例

  1. import paddle
  2. import numpy as np
  3. img1 = np.array([[1, 2], [3, 4]]).astype(np.float32)
  4. img2 = np.array([[5, 6], [7, 8]]).astype(np.float32)
  5. inputs = [paddle.to_tensor(img1), paddle.to_tensor(img2)]
  6. index = paddle.to_tensor(np.array([[1], [0]]).astype(np.int32))
  7. res = paddle.multiplex(inputs, index)
  8. print(res)
  9. # [[5. , 6.],
  10. # [3. , 4.]]