ScatterNdNonAliasingAdd
tensorflow C++ API
tensorflow::ops::ScatterNdNonAliasingAdd
Applies sparse addition to input
using individual values or slices.
Summary
fromupdates
according to indicesindices
. The updates are non-aliasing:input
is only modified in-place if no other operations will use it. Otherwise, a copy ofinput
is made. This operation has a gradient with respect to bothinput
andupdates
.
input
is aTensor
with rankP
andindices
is aTensor
of rankQ
.
indices
must be integer tensor, containing indices intoinput
. It must be shape[d_0, ..., d_{Q-2}, K]
where0 < K <= P
.
The innermost dimension ofindices
(with lengthK
) corresponds to indices into elements (ifK = P
) or(P-K)
-dimensional slices (ifK < P
) along theK
th dimension ofinput
.
updates
isTensor
of rankQ-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 valueoutput
would look like this:
[1, 13, 3, 14, 14, 6, 7, 20]
See tf.scatter_nd for more details about how to make updates to slices.
Arguments:
- scope: A Scope object
- input: A Tensor.
- indices: A Tensor . Must be one of the following types:
int32
,int64
. A tensor of indices intoinput
. - updates: A Tensor. Must have the same type as ref. A tensor of updated values to add to
input
.
Returns:
ScatterNdNonAliasingAdd block
Source link :https://github.com/EXPNUNI/enuSpaceTensorflow/blob/master/enuSpaceTensorflow/tf_array_ops.cpp
Argument:
- Scope scope : A Scope object (A scope is generated automatically each page. A scope is not connected.)
- Input input: A Tensor.
- Input indices: A Tensor . Must be one of the following types:
int32
,int64
. A tensor of indices intoinput
. - Input updates: A Tensor. Must have the same type as ref. A tensor of updated values to add to
input
.
Output:
- Output
output
: Output object of ScatterNdNonAliasingAdd class object.
Result:
- std::vector(Tensor)
result_output
: ATensor
with the same shape asinput
, containing values ofinput
updated withupdates
.
Using Method
※ update의 데이터를 indices에 있는 인덱스 순서대로 input tensor에 있는 값에 더한다.
※ input의 shape는 indices의 shape에서 -1 rank한 값과 update의 shape값을 랭크 별로 더한 shape이다. (ex: indice의 shape는 [2,1]이고, update의 shape가 [2,4,4]라면 -> [2] + [2,4,4] = [4,4,4] )