scatter_nd_add¶
- paddle. scatter_nd_add ( x, index, updates, name=None ) [source]
- 
         Output is obtained by applying sparse addition to a single value or slice in a Tensor. xis a Tensor with ndim \(R\) andindexis a Tensor with ndim \(K\) . Thus,indexhas shape \([i_0, i_1, ..., i_{K-2}, Q]\) where \(Q \leq R\) .updatesis a Tensor with ndim \(K - 1 + R - Q\) and its shape is \(index.shape[:-1] + x.shape[index.shape[-1]:]\) .According to the \([i_0, i_1, ..., i_{K-2}]\) of index, add the correspondingupdatesslice to thexslice which is obtained by the last one dimension ofindex.Given: * Case 1: x = [0, 1, 2, 3, 4, 5] index = [[1], [2], [3], [1]] updates = [9, 10, 11, 12] we get: output = [0, 22, 12, 14, 4, 5] * Case 2: x = [[65, 17], [-14, -25]] index = [[], []] updates = [[[-1, -2], [1, 2]], [[3, 4], [-3, -4]]] x.shape = (2, 2) index.shape = (2, 0) updates.shape = (2, 2, 2) we get: output = [[67, 19], [-16, -27]]- Parameters
- 
           - x (Tensor) – The x input. Its dtype should be int32, int64, float32, float64. 
- index (Tensor) – The index input with ndim > 1 and index.shape[-1] <= x.ndim. Its dtype should be int32 or int64 as it is used as indexes. 
- updates (Tensor) – The updated value of scatter_nd_add op, and it must have the same dtype as x. It must have the shape index.shape[:-1] + x.shape[index.shape[-1]:]. 
- name (str|None) – The output tensor name. If set None, the layer will be named automatically. 
 
- Returns
- 
           The output is a tensor with the same shape and dtype as x. 
- Return type
- 
           output (Tensor) 
 Examples import paddle x = paddle.rand(shape=[3, 5, 9, 10], dtype='float32') updates = paddle.rand(shape=[3, 9, 10], dtype='float32') index = paddle.to_tensor([[1, 1], [0, 1], [1, 3]], dtype='int64') output = paddle.scatter_nd_add(x, index, updates) print(output.shape) # [3, 5, 9, 10] 
