mindspore.ops.inplace_index_add

mindspore.ops.inplace_index_add(var, indices, updates, axis)[源代码]

逐元素将一个Tensor updates 添加到原Tensor var 的指定轴和索引处。

参数:
  • var (Parameter) - 被添加的输入Parameter,数据类型为uint8、int8、int16、int32、float16、float32或float64。

  • indices (Tensor) - axis 指定轴上执行添加操作的索引。是一个1D Tensor,shape为 \((updates.shape[axis],)\) ,它的每个值应在范围 \([0, var.shape[axis])\) 之内,数据类型为int32。

  • updates (Tensor) - 要添加的输入Tensor。必须与 var 具有相同的数据类型。 除 axis 维度外, updatesvar 的shape应一致。

  • axis (int) - 要执行添加操作的轴。应该在范围 \([0, len(var.dim))\) 内。

返回:

Tensor,更新后的结果,其shape和dtype与 var 一致。

异常:
  • TypeError - var 不是Parameter。

  • TypeError - indicesupdates 不是Tensor。

  • ValueError - axis 超出有效范围。

  • ValueError - varupdates 的秩不相等。

  • ValueError - indices shape不是 \((updates.shape[axis],)\)

  • ValueError - updates 的shape与 var 在除 axis 维度外存在不同。

支持平台:

Ascend CPU

样例:

>>> import mindspore
>>> import numpy as np
>>> from mindspore import Tensor, ops, Parameter
>>> var = Parameter(Tensor(np.array([[1, 2], [3, 4], [5, 6]]), mindspore.float32))
>>> indices = Tensor(np.array([0, 1]), mindspore.int32)
>>> updates = Tensor(np.array([[0.5, 1.0], [1.0, 1.5]]), mindspore.float32)
>>> var = ops.inplace_index_add(var, indices, updates, axis=0)
>>> print(var)
[[1.5 3. ]
 [4.  5.5]
 [5.  6. ]]