index_put

paddle. index_put ( x, indices, value, accumulate=False, name=None ) [源代码]

依据索引 indices ,将指定位置的 x 重新赋值为 value 。这里 indices 是一个 tuple of tensor

示例图解说明

下图展示了示例中的情形——一个形状为[3,3]的二维张量通过 index_put 操作,将对应 index 的位置填充为 value 张量里对应元素,注意 index 与 value 的元素个数应匹配。

示例图示

参数

  • x (Tensor)– 输入 Tensor。 x 的数据类型可以是 float16, float32,float64,int32,int64,bool。

  • indices (Tuple of Tensor)– 包含用来索引的 tensors 的元组。数据类型为 int32,int64,bool。

  • value (Tensor) – 用来给 x 赋值的 Tensor。

  • accumulate (Tensor,可选)– 指定是否将 value 加到 x 的参数。 默认值为 False。

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

返回

Tensor,返回一个数据类型同输入的 Tensor。

代码示例

>>> import paddle

>>> x = paddle.zeros([3, 3])
>>> value = paddle.ones([3])
>>> ix1 = paddle.to_tensor([0,1,2])
>>> ix2 = paddle.to_tensor([1,2,1])
>>> indices=(ix1,ix2)

>>> out = paddle.index_put(x,indices,value)
>>> print(x)
Tensor(shape=[3, 3], dtype=float32, place=Place(cpu), stop_gradient=True,
[[0., 0., 0.],
 [0., 0., 0.],
 [0., 0., 0.]])
>>> print(out)
Tensor(shape=[3, 3], dtype=float32, place=Place(cpu), stop_gradient=True,
[[0., 1., 0.],
 [0., 0., 1.],
 [0., 1., 0.]])

更多关于 outplace 操作的介绍请参考 3.1.3 原位(Inplace)操作和非原位(Outplace)操作的区别 了解详情。