mindspore.ops.inplace_sub

mindspore.ops.inplace_sub(x, v, indices)[source]

Subtracts v into specified rows of x. Computes \(y = x\); \(y[i,] -= input\_v\).

Note

indices refers to the left-most dimension.

Parameters
  • indices (Union[int, tuple]) – Indices into the left-most dimension of x, and determines which rows of x to subtract with v. It is an int or tuple, whose value is in [0, the first dimension size of x).

  • x (Tensor) – The first input is a tensor whose data type is float16, float32, float64 or int32. \((N,*)\) where \(*\) means, any number of additional dimensions, its rank should be less than 8.

  • v (Tensor) – The second input is a tensor who has the same dimension sizes as x except the first dimension, which must be the same as indices’ size. It has the same data type with x.

Returns

Tensor, has the same shape and dtype as x.

Raises
  • TypeError – If indices is neither int nor tuple.

  • TypeError – If indices is a tuple whose elements are not all int.

  • ValueError – If the rank of x is not equal to the rank of v.

  • ValueError – If the length of indices is not equal to v.shape[0].

  • ValueError – If the values of indices are not in range of [0, x.shape[0]).

Supported Platforms:

Ascend CPU

Examples

>>> import numpy as np
>>> import mindspore
>>> from mindspore import Tensor, ops
>>> indices = (0, 1)
>>> x = Tensor(np.array([[1, 2], [3, 4], [5, 6]]), mindspore.float32)
>>> input_v = Tensor(np.array([[0.5, 1.0], [1.0, 1.5]]), mindspore.float32)
>>> output = ops.inplace_sub(x, input_v, indices)
>>> print(output)
[[0.5 1. ]
 [2.  2.5]
 [5.  6. ]]