Метод reduce класса Dataset
Метод reduce класса Dataset применяется для
агрегации всех элементов датасета в одно значение.
Первым параметром передается функция свертки, которая
принимает аккумулятор и текущий элемент, а возвращает
новое значение аккумулятора. Вторым параметром передается
начальное значение аккумулятора.
Синтаксис
Dataset.reduce(initial_state, reduce_func)
Пример
Давайте создадим датасет из чисел и найдем их сумму
с помощью метода reduce:
import tensorflow as tf
dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5])
def sum_func(state, value):
return state + value
res = dataset.reduce(0, sum_func)
print(res)
Результат выполнения кода:
tf.Tensor(15, shape=(), dtype=int32)
Пример
Давайте найдем максимальное значение в датасете:
import tensorflow as tf
dataset = tf.data.Dataset.from_tensor_slices([3, 1, 4, 2, 5])
def max_func(state, value):
return tf.maximum(state, value)
res = dataset.reduce(tf.constant(0), max_func)
print(res)
Результат выполнения кода:
tf.Tensor(5, shape=(), dtype=int32)
Пример
Давайте объединим все строки датасета в одну:
import tensorflow as tf
dataset = tf.data.Dataset.from_tensor_slices(['abcde', 'abcde'])
def concat_func(state, value):
return state + value
res = dataset.reduce('', concat_func)
print(res)
Результат выполнения кода:
tf.Tensor(b'abcdeabcde', shape=(), dtype=string)