根据 indices
将稀疏的 updates
添加到现有张量。
用法
tf.raw_ops.TensorScatterAdd(
tensor, indices, updates, name=None
)
参数
-
tensor
一个Tensor
。要复制/更新的张量。 -
indices
一个Tensor
。必须是以下类型之一:int32
,int64
。索引张量。 -
updates
一个Tensor
。必须与tensor
具有相同的类型。更新分散到输出中。 -
name
操作的名称(可选)。
返回
-
一个
Tensor
。具有与tensor
相同的类型。
此操作通过将稀疏的 updates
添加到传入的 tensor
来创建一个新的张量。此操作与 tf.compat.v1.scatter_nd_add
非常相似,只是将更新添加到现有张量(而不是变量)上。如果无法重新使用现有张量的内存,则制作并更新副本。
indices
是一个整数张量,其中包含指向形状为 tensor.shape
的新张量的索引。 indices
的最后一个维度最多可以是 tensor.shape
的等级:
indices.shape[-1] <= tensor.shape.rank
indices
的最后一个维度对应于沿 tensor.shape
的维度 indices.shape[-1]
的元素(如果是 indices.shape[-1] = tensor.shape.rank
)或切片(如果是 indices.shape[-1] < tensor.shape.rank
)的索引。 updates
是一个带形状的张量
indices.shape[:-1] + tensor.shape[indices.shape[-1]:]
tensor_scatter_add 的最简单形式是按索引将单个元素添加到张量。例如,假设我们想在 8 个元素的 rank-1 张量中添加 4 个元素。
在 Python 中,此分散添加操作如下所示:
indices = tf.constant([[4], [3], [1], [7]])
updates = tf.constant([9, 10, 11, 12])
tensor = tf.ones([8], dtype=tf.int32)
updated = tf.tensor_scatter_nd_add(tensor, indices, updates)
print(updated)
生成的张量如下所示:
[1, 12, 1, 11, 10, 1, 1, 13]
我们还可以一次插入更高等级张量的整个切片。例如,如果我们想在具有两个新值矩阵的 rank-3 张量的第一维中插入两个切片。
在 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]]])
tensor = tf.ones([4, 4, 4],dtype=tf.int32)
updated = tf.tensor_scatter_nd_add(tensor, indices, updates)
print(updated)
生成的张量如下所示:
[[[6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8], [9, 9, 9, 9]],
[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]],
[[6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8], [9, 9, 9, 9]],
[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]]
请注意,在 CPU 上,如果发现超出范围的索引,则会返回错误。在 GPU 上,如果发现超出范围的索引,则忽略该索引。
相关用法
- Python tf.raw_ops.TensorScatterMax用法及代码示例
- Python tf.raw_ops.TensorScatterSub用法及代码示例
- Python tf.raw_ops.TensorScatterUpdate用法及代码示例
- Python tf.raw_ops.TensorArrayConcatV3用法及代码示例
- Python tf.raw_ops.TensorArraySplitV3用法及代码示例
- Python tf.raw_ops.TPUReplicatedInput用法及代码示例
- Python tf.raw_ops.Tanh用法及代码示例
- Python tf.raw_ops.TakeManySparseFromTensorsMap用法及代码示例
- Python tf.raw_ops.TopKV2用法及代码示例
- Python tf.raw_ops.Tile用法及代码示例
- Python tf.raw_ops.TPUReplicatedOutput用法及代码示例
- Python tf.raw_ops.Tan用法及代码示例
- Python tf.raw_ops.TopK用法及代码示例
- Python tf.raw_ops.Bitcast用法及代码示例
- Python tf.raw_ops.SelfAdjointEigV2用法及代码示例
- Python tf.raw_ops.BatchMatMul用法及代码示例
- Python tf.raw_ops.OneHot用法及代码示例
- Python tf.raw_ops.ResourceScatterNdSub用法及代码示例
- Python tf.raw_ops.ReadVariableXlaSplitND用法及代码示例
- Python tf.raw_ops.GatherV2用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.raw_ops.TensorScatterAdd。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。