Метод map класса Dataset
Метод map класса Dataset применяет
переданную функцию к каждому элементу набора данных.
Первым параметром метод принимает функцию преобразования,
которая получает один элемент датасета и возвращает
преобразованный элемент. Вторым необязательным параметром
можно указать количество параллельных вызовов
num_parallel_calls. Метод возвращает новый объект
Dataset, поэтому исходный набор данных не изменяется.
Синтаксис
dataset.map(map_func, [num_parallel_calls])
Пример
Давайте создадим датасет из тензора и применим функцию, умножающую каждый элемент на два:
import tensorflow as tf
dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5])
dataset = dataset.map(lambda x: x * 2)
for element in dataset:
print(element.numpy())
Результат выполнения кода:
2
4
6
8
10
Пример
Давайте применим функцию к датасету из двумерного тензора и посчитаем сумму элементов каждой строки:
import tensorflow as tf
dataset = tf.data.Dataset.from_tensor_slices(
[[1, 2, 3], [4, 5, 6]]
)
dataset = dataset.map(lambda x: tf.reduce_sum(x))
for element in dataset:
print(element.numpy())
Результат выполнения кода:
6
15
Пример
Давайте применим функцию, возвращающую кортеж из исходного элемента и его квадрата:
import tensorflow as tf
dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5])
dataset = dataset.map(lambda x: (x, x * x))
for element in dataset:
print(element[0].numpy(), element[1].numpy())
Результат выполнения кода:
1 1
2 4
3 9
4 16
5 25
Пример
Давайте используем параметр num_parallel_calls
для параллельной обработки элементов:
import tensorflow as tf
dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5])
dataset = dataset.map(
lambda x: x + 10,
num_parallel_calls=tf.data.AUTOTUNE
)
for element in dataset:
print(element.numpy())
Результат выполнения кода:
11
12
13
14
15
Смотрите также
-
класс
Dataset,
который представляет набор данных -
метод
filter,
который фильтрует элементы датасета -
метод
batch,
который объединяет элементы в батчи -
метод
from_tensor_slices,
который создает датасет из тензора