Функция unsorted_segment_sum
Функция unsorted_segment_sum выполняет суммирование
элементов входного тензора вдоль нулевой оси
в соответствии с идентификаторами сегментов.
Первым параметром передается тензор с данными,
вторым - тензор с идентификаторами сегментов,
третьим - количество сегментов.
В отличие от функции segment_sum, идентификаторы
сегментов могут быть не отсортированы.
Синтаксис
tf.math.unsorted_segment_sum(data, segment_ids, num_segments, [name])
Пример
Давайте просуммируем элементы тензора
по трем сегментам. Идентификаторы сегментов
идут в порядке 0, 1, 2, 0, 1:
import tensorflow as tf
data = tf.constant([1, 2, 3, 4, 5])
segment_ids = tf.constant([0, 1, 2, 0, 1])
res = tf.math.unsorted_segment_sum(data, segment_ids, num_segments=3)
print(res)
Результат выполнения кода:
tf.Tensor([5 7 3], shape=(3,), dtype=int32)
Пример
Давайте посмотрим, как неотсортированные
идентификаторы сегментов группируют элементы.
Здесь идентификаторы идут в порядке
2, 0, 1, 2, 0:
Результат выполнения кода:
tf.Tensor([7 3 5], shape=(3,), dtype=int32)
Пример
Давайте применим функцию к двумерному тензору. Суммирование выполняется по строкам в соответствии с идентификаторами сегментов:
import tensorflow as tf
data = tf.constant([[1, 2, 3], [4, 5, 6]])
segment_ids = tf.constant([0, 1])
res = tf.math.unsorted_segment_sum(data, segment_ids, num_segments=2)
print(res)
Результат выполнения кода:
tf.Tensor(
[[1 2 3]
[4 5 6]], shape=(2, 3), dtype=int32)
Смотрите также
-
функцию
segment_sum,
которая суммирует элементы по отсортированным сегментам -
функцию
bincount,
которая подсчитывает количество вхождений значений -
функцию
reduce_sum,
которая вычисляет сумму элементов тензора -
функцию
cumsum,
которая вычисляет кумулятивную сумму элементов