Метод apply класса Dataset
Метод apply класса Dataset применяет
переданную функцию преобразования к текущему
датасету и возвращает новый объект Dataset.
Первым параметром метод принимает функцию,
которая получает на вход исходный датасет и
возвращает преобразованный датасет. Такой подход
позволяет строить собственные переиспользуемые
преобразования поверх стандартных методов.
Синтаксис
dataset.apply(transform_func)
Пример
Давайте создадим датасет из тензора и применим к нему преобразование, которое увеличивает каждый элемент на единицу:
import tensorflow as tf
def add_one(dataset):
return dataset.map(lambda x: x + 1)
ds = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5])
res = ds.apply(add_one)
for item in res:
print(item.numpy())
Результат выполнения кода:
2
3
4
5
6
Пример
Давайте применим преобразование, которое объединяет батчирование и перемешивание данных:
import tensorflow as tf
tf.random.set_seed(0)
def prepare(dataset):
dataset = dataset.shuffle(buffer_size=5)
dataset = dataset.batch(2)
return dataset
ds = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5])
res = ds.apply(prepare)
for item in res:
print(item.numpy())
Результат выполнения кода:
[4 5]
[1 3]
[2]
Пример
Давайте применим преобразование к датасету строк, которое приводит элементы к верхнему регистру:
import tensorflow as tf
def upper_case(dataset):
return dataset.map(lambda x: tf.strings.upper(x))
ds = tf.data.Dataset.from_tensor_slices(['abcde', 'model.keras'])
res = ds.apply(upper_case)
for item in res:
print(item.numpy().decode())
Результат выполнения кода:
"ABCDE"
"MODEL.KERAS"