diff --git a/docs/ops/movement/ScatterUpdate_3.md b/docs/ops/movement/ScatterUpdate_3.md index b004ad1b663f1f..1ba52d09e3e017 100644 --- a/docs/ops/movement/ScatterUpdate_3.md +++ b/docs/ops/movement/ScatterUpdate_3.md @@ -7,82 +7,80 @@ **Short description**: *ScatterUpdate* creates a copy of the first input tensor with updated elements specified with second and third input tensors. **Detailed description**: *ScatterUpdate* creates a copy of the first input tensor with updated elements in positions specified with `indices` input -and values specified with `updates` tensor starting from the dimension with index `axis`. For the `data` tensor of shape `[d_0, d_1, ..., d_n]`, -`indices` tensor of shape `[i_0, i_1, ..., i_k]` and `updates` tensor of shape -`[d_0, d_1, ... d_(axis - 1), i_0, i_1, ..., i_k, d_(axis + 1), ..., d_n]` the operation computes +and values specified with `updates` tensor starting from the dimension with index `axis`. For the `data` tensor of shape \f$[d_0,\;d_1,\;\dots,\;d_n]\f$, +`indices` tensor of shape \f$[i_0,\;i_1,\;\dots,\;i_k]\f$ and `updates` tensor of shape +\f$[d_0,\;d_1,\;\dots,\;d_{axis - 1},\;i_0,\;i_1,\;\dots,\;i_k,\;d_{axis + 1},\;\dots, d_n]\f$ the operation computes for each `m, n, ..., p` of the `indices` tensor indices: -``` -data[..., indices[m, n, ..., p], ...] = updates[..., m, n, ..., p, ...] -``` -where first `...` in the `data` corresponds to first `axis` dimensions, last `...` in the `data` corresponds to the +\f[data[\dots,\;indices[m,\;n,\;\dots,\;p],\;\dots] = updates[\dots,\;m,\;n,\;\dots,\;p,\;\dots]\f] + +where first \f$\dots\f$ in the `data` corresponds to \f$[d_0,\;\dots,\;d_{axis - 1}]\f$ dimensions, last\f$\dots\f$ in the `data` corresponds to the `rank(data) - (axis + 1)` dimensions. Several examples for case when `axis = 0`: -1. `indices` is a 0D tensor: `data[indices, ...] = updates[...]` -2. `indices` is a 1D tensor (for each `i`): `data[indices[i], ...] = updates[i, ...]` -3. `indices` is a ND tensor (for each `i, ..., j`): `data[indices[i, ..., j], ...] = updates[i, ..., j, ...]` - -This operation is similar to TensorFlow* operation [ScatterUpdate](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/scatter_update) -but allows scattering for the arbitrary axis. +1. `indices` is a \f$0\f$D tensor: \f$data[indices,\;\dots] = updates[\dots]\f$ +2. `indices` is a \f$1\f$D tensor (\f$\forall_{i}\f$): \f$data[indices[i],\;\dots] = updates[i,\;\dots]\f$ +3. `indices` is a \f$N\f$D tensor (\f$\forall_{i,\;\dots,\;j}\f$): \f$data[indices[i],\;\dots,\;j],\;\dots] = updates[i,\;\dots,\;j,\;\dots]\f$ **Attributes**: *ScatterUpdate* does not have attributes. **Inputs**: -* **1**: `data` tensor of arbitrary rank `r` and of type *T*. **Required.** +* **1**: `data` tensor of arbitrary rank `r` and type *T_NUMERIC*. **Required.** * **2**: `indices` tensor with indices of type *T_IND*. -All index values are expected to be within bounds `[0, s - 1]` along axis of size `s`. If multiple indices point to the -same output location then the order of updating the values is undefined. If an index points to non-existing output -tensor element or is negative then an exception is raised. **Required.** +All index values are expected to be within bounds `[0, s - 1]` along the axis of size `s`. If multiple indices point to the +same output location, the order of updating the values is undefined. If an index points to a non-existing output +tensor element or is negative, then an exception is raised. **Required.** -* **3**: `updates` tensor of type *T*. **Required.** +* **3**: `updates` tensor of type *T_NUMERIC* and rank equal to `rank(indices) + rank(data) - 1` **Required.** * **4**: `axis` tensor with scalar or 1D tensor with one element of type *T_AXIS* specifying axis for scatter. -The value can be in range `[-r, r - 1]` where `r` is the rank of `data`. **Required.** +The value can be in the range `[ -r, r - 1]`, where `r` is the rank of `data`. **Required.** **Outputs**: -* **1**: tensor with shape equal to `data` tensor of the type *T*. +* **1**: tensor with shape equal to `data` tensor of the type *T_NUMERIC*. **Types** -* *T*: any numeric type. +* *T_NUMERIC*: any numeric type. * *T_IND*: any supported integer types. * *T_AXIS*: any supported integer types. -**Example** +**Examples** + +*Example 1* ```xml - + 1000 256 10 15 - + 125 20 - + 1000 125 20 10 15 - - 1 + + 1 - + 1000 256 10 @@ -91,3 +89,32 @@ The value can be in range `[-r, r - 1]` where `r` is the rank of `data`. **Requi ``` + +*Example 2* + +```xml + + + + 3 + 5 + + + 2 + + + 3 + 2 + + + 1 + + + + + 3 + 5 + + + +``` \ No newline at end of file