# tf.raw_ops.ScatterNdNonAliasingAdd

Applies sparse addition to `input` using individual values or slices

#### View aliases


**Compat aliases for migration**

See
[Migration guide](https://www.tensorflow.org/guide/migrate) for
more details.

[`tf.compat.v1.raw_ops.ScatterNdNonAliasingAdd`](https://www.tensorflow.org/api_docs/python/tf/raw_ops/ScatterNdNonAliasingAdd)

<br />

    tf.raw_ops.ScatterNdNonAliasingAdd(
        input, indices, updates, name=None
    )

from `updates` according to indices `indices`. The updates are non-aliasing:
`input` is only modified in-place if no other operations will use it.
Otherwise, a copy of `input` is made. This operation has a gradient with
respect to both `input` and `updates`.

`input` is a `Tensor` with rank `P` and `indices` is a `Tensor` of rank `Q`.

`indices` must be integer tensor, containing indices into `input`.
It must be shape \\(\[d_0, ..., d_{Q-2}, K\]\\) where `0 < K <= P`.

The innermost dimension of `indices` (with length `K`) corresponds to
indices into elements (if `K = P`) or `(P-K)`-dimensional slices
(if `K < P`) along the `K`th dimension of `input`.

`updates` is `Tensor` of rank `Q-1+P-K` with shape:

\\\[\[d_0, ..., d_{Q-2}, input.shape\[K\], ..., input.shape\[P-1\]\].\\\]

For example, say we want to add 4 scattered elements to a rank-1 tensor to 8
elements. In Python, that addition would look like this:

    input = tf.constant([1, 2, 3, 4, 5, 6, 7, 8])
    indices = tf.constant([[4], [3], [1], [7]])
    updates = tf.constant([9, 10, 11, 12])
    output = tf.scatter_nd_non_aliasing_add(input, indices, updates)
    with tf.Session() as sess:
      print(sess.run(output))

The resulting value `output` would look like this:

    [1, 13, 3, 14, 14, 6, 7, 20]

See [`tf.scatter_nd`](https://www.tensorflow.org/versions/r2.14/api_docs/python/tf/scatter_nd) for more details about how to make updates to slices.

<br />

<br />

<br />

| ## Args ||
|---|---|
| `input` | A `Tensor`. Must be one of the following types: `float32`, `float64`, `int32`, `uint8`, `int16`, `int8`, `complex64`, `int64`, `qint8`, `quint8`, `qint32`, `bfloat16`, `qint16`, `quint16`, `uint16`, `complex128`, `half`, `uint32`, `uint64`, `bool`. A Tensor. |
| `indices` | A `Tensor`. Must be one of the following types: `int32`, `int64`. A Tensor. Must be one of the following types: `int32`, `int64`. A tensor of indices into `input`. |
| `updates` | A `Tensor`. Must have the same type as `input`. A Tensor. Must have the same type as ref. A tensor of updated values to add to `input`. |
| `name` | A name for the operation (optional). |

<br />

<br />

<br />

<br />

| ## Returns ||
|---|---|
| A `Tensor`. Has the same type as `input`. ||

<br />