mx.nd.scatter.nd

Description

Scatters data into a new tensor according to indices.

Given data with shape (Y_0, …, Y_{K-1}, X_M, …, X_{N-1}) and indices with shape (M, Y_0, …, Y_{K-1}), the output will have shape (X_0, X_1, …, X_{N-1}), where M <= N. If M == N, data shape should simply be (Y_0, …, Y_{K-1}).

The elements in output is defined as follows:

output[indices[0, y_0, ..., y_{K-1}],
...,
indices[M-1, y_0, ..., y_{K-1}],
x_M, ..., x_{N-1}] = data[y_0, ..., y_{K-1}, x_M, ..., x_{N-1}]

all other entries in output are 0.

Warning

If the indices have duplicates, the result will be non-deterministic and the gradient of scatter_nd will not be correct!!

Example:

data = [2, 3, 0]
indices = [[1, 1, 0], [0, 1, 0]]
shape = (2, 2)
scatter_nd(data, indices, shape) = [[0, 0], [2, 3]]

data = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
indices = [[0, 1], [1, 1]]
shape = (2, 2, 2, 2)
scatter_nd(data, indices, shape) = [[[[0, 0],
[0, 0]],

[[1, 2],
[3, 4]]],

[[[0, 0],
[0, 0]],

[[5, 6],
[7, 8]]]]

Arguments

Argument

Description

data

NDArray-or-Symbol data

indices

NDArray-or-Symbol indices

shape

Shape(tuple), required.

Shape of output.

Value

out The result mx.ndarray