@Namespace(value="tensorflow::ops") @NoOffset public static class tensorflow.ScatterNd extends Pointer
updates into a new tensor according to indices.
Creates a new tensor by applying sparse updates to individual values or
slices within a tensor (initially zero for numeric, empty for string) of
the given shape according to indices. This operator is the inverse of the
tf.gather_nd operator which extracts values or slices from a given tensor.
If indices contains duplicates, then their updates are accumulated (summed).
**WARNING**: The order in which updates are applied is nondeterministic, so the
output will be nondeterministic if indices contains duplicates -- because
of some numerical approximation issues, numbers summed in different order
may yield different results.
indices is an integer tensor containing indices into a new tensor of shape
shape. The last dimension of indices can be at most the rank of shape:
indices.shape[-1] <= shape.rank
The last dimension of indices corresponds to indices into elements
(if indices.shape[-1] = shape.rank) or slices
(if indices.shape[-1] < shape.rank) along dimension indices.shape[-1] of
shape. updates is a tensor with shape
indices.shape[:-1] + shape[indices.shape[-1]:]
The simplest form of scatter is to insert individual elements in a tensor by
index. For example, say we want to insert 4 scattered elements in a rank-1
tensor with 8 elements.
python
indices = tf.constant([[4], [3], [1], [7]])
updates = tf.constant([9, 10, 11, 12])
shape = tf.constant([8])
scatter = tf.scatter_nd(indices, updates, shape)
with tf.Session() as sess:
print(sess.run(scatter))
The resulting tensor would look like this:
[0, 11, 0, 10, 9, 0, 0, 12]
We can also, insert entire slices of a higher rank tensor all at once. For
example, if we wanted to insert two slices in the first dimension of a
rank-3 tensor with two matrices of new values.
python
indices = tf.constant([[0], [2]])
updates = tf.constant([[[5, 5, 5, 5], [6, 6, 6, 6],
[7, 7, 7, 7], [8, 8, 8, 8]],
[[5, 5, 5, 5], [6, 6, 6, 6],
[7, 7, 7, 7], [8, 8, 8, 8]]])
shape = tf.constant([4, 4, 4])
scatter = tf.scatter_nd(indices, updates, shape)
with tf.Session() as sess:
print(sess.run(scatter))
The resulting tensor would look like this:
[[[5, 5, 5, 5], [6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8]],
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]],
[[5, 5, 5, 5], [6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8]],
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]]
Note that on CPU, if an out of bound index is found, an error is returned.
On GPU, if an out of bound index is found, the index is ignored.
Arguments:
* scope: A Scope object
* indices: Index tensor.
* updates: Updates to scatter into output.
* shape: 1-D. The shape of the resulting tensor.
Returns:
* Output: A new tensor with the given shape and updates applied according
to the indices.Pointer.CustomDeallocator, Pointer.Deallocator, Pointer.NativeDeallocator| Constructor and Description |
|---|
ScatterNd(Pointer p)
Pointer cast constructor.
|
ScatterNd(tensorflow.Scope scope,
tensorflow.Input indices,
tensorflow.Input updates,
tensorflow.Input shape) |
| Modifier and Type | Method and Description |
|---|---|
tensorflow.Input |
asInput() |
tensorflow.Output |
asOutput() |
tensorflow.Node |
node() |
tensorflow.Operation |
operation() |
tensorflow.ScatterNd |
operation(tensorflow.Operation operation) |
tensorflow.Output |
output() |
tensorflow.ScatterNd |
output(tensorflow.Output output) |
address, asBuffer, asByteBuffer, availablePhysicalBytes, calloc, capacity, capacity, close, deallocate, deallocate, deallocateReferences, deallocator, deallocator, equals, fill, formatBytes, free, hashCode, isNull, limit, limit, malloc, maxBytes, maxPhysicalBytes, memchr, memcmp, memcpy, memmove, memset, offsetof, parseBytes, physicalBytes, position, position, put, realloc, setNull, sizeof, toString, totalBytes, totalPhysicalBytes, withDeallocator, zeropublic ScatterNd(Pointer p)
Pointer.Pointer(Pointer).public ScatterNd(@Const @ByRef tensorflow.Scope scope, @ByVal tensorflow.Input indices, @ByVal tensorflow.Input updates, @ByVal tensorflow.Input shape)
@ByVal @Name(value="operator tensorflow::Output") public tensorflow.Output asOutput()
@ByVal @Name(value="operator tensorflow::Input") public tensorflow.Input asInput()
public tensorflow.Node node()
@ByRef public tensorflow.Operation operation()
public tensorflow.ScatterNd operation(tensorflow.Operation operation)
@ByRef public tensorflow.Output output()
public tensorflow.ScatterNd output(tensorflow.Output output)
Copyright © 2019. All rights reserved.