TensorScatterNdAdd

публичный финальный класс TensorScatterNdAdd

Добавляет редкие «обновления» к существующему тензору в соответствии с «индексами».

Эта операция создает новый тензор, добавляя разреженные «обновления» к переданному в «тензоре». Эта операция очень похожа на tf.scatter_nd_add, за исключением того, что обновления добавляются к существующему тензору (а не к переменной). Если память существующего тензора не может быть повторно использована, создается и обновляется копия.

«indices» — это целочисленный тензор, содержащий индексы в новый тензор формы «tensor.shape». Последнее измерение индексов может быть не более ранга tensor.shape:

index.shape[-1] <= tensor.shape.rank

Последнее измерение индексов соответствует индексам элементов (если indices.shape[-1] = tensor.shape.rank) или срезов (если indices.shape[-1] < tensor.shape.rank`). вдоль измерения `indices.shape[-1]` из `tensor.shape`. «обновления» — это тензор с формой

indexes.shape[:-1] + tensor.shape[indices.shape[-1]:]

Самая простая форма tensor_scatter_add — добавление отдельных элементов в тензор по индексу. Например, предположим, что мы хотим добавить 4 элемента в тензор ранга 1 с 8 элементами.

В 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]

Мы также можем вставить целые фрагменты тензора более высокого ранга одновременно. Например, если мы хотим вставить два среза в первое измерение тензора ранга 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]]]

Обратите внимание, что на процессоре, если обнаруживается выходной индекс, возвращается ошибка. На графическом процессоре, если обнаружен выходящий за пределы индекс, индекс игнорируется.

Константы

Нить OP_NAME Название этой операции, известное основному движку TensorFlow.

Публичные методы

Выход <Т>
какВывод ()
Возвращает символический дескриптор тензора.
static <T расширяет TType > TensorScatterNdAdd <T>
create (область области действия , тензор операнда <T>, операнд <? расширяет индексы TNumber >, обновления операнда <T>)
Фабричный метод для создания класса, обертывающего новую операцию TensorScatterNdAdd.
Выход <Т>
выход ()
Новый тензор скопирован из тензора и добавлены обновления в соответствии с индексами.

Унаследованные методы

Константы

общедоступная статическая финальная строка OP_NAME

Название этой операции, известное основному движку TensorFlow.

Постоянное значение: «TensorScatterAdd»

Публичные методы

публичный вывод <T> asOutput ()

Возвращает символический дескриптор тензора.

Входные данные для операций TensorFlow являются выходными данными другой операции TensorFlow. Этот метод используется для получения символического дескриптора, который представляет собой вычисление входных данных.

public static TensorScatterNdAdd <T> create (область области действия , тензор операнда <T>, операнд <? расширяет индексы TNumber >, обновления операнда <T>)

Фабричный метод для создания класса, обертывающего новую операцию TensorScatterNdAdd.

Параметры
объем текущий объем
тензор Тензор для копирования/обновления.
индексы Индексный тензор.
обновления Обновления раскидывать на вывод.
Возврат
  • новый экземпляр TensorScatterNdAdd

публичный вывод <T> вывод ()

Новый тензор скопирован из тензора и добавлены обновления в соответствии с индексами.