РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
474 of 824 menu

Метод from_generator

Метод from_generator класса Dataset создает датасет из Python-генератора. Первым параметром метод принимает функцию-генератор, вторым - параметр output_signature с описанием типов и форм элементов, третьим - параметр output_types с типами данных, четвертым - параметр output_shapes с формами тензоров. Метод удобен, когда данные нельзя загрузить в память целиком, а нужно порождать их на лету.

Синтаксис

tf.data.Dataset.from_generator( generator, output_signature, output_types, output_shapes, args )

Пример

Давайте создадим датасет из простого генератора чисел:

import tensorflow as tf def gen(): for i in range(5): yield i ds = tf.data.Dataset.from_generator( gen, output_signature=tf.TensorSpec(shape=(), dtype=tf.int32) ) for elem in ds: print(elem)

Результат выполнения кода:

tf.Tensor(0, shape=(), dtype=int32) tf.Tensor(1, shape=(), dtype=int32) tf.Tensor(2, shape=(), dtype=int32) tf.Tensor(3, shape=(), dtype=int32) tf.Tensor(4, shape=(), dtype=int32)

Пример

Давайте создадим датасет из генератора, возвращающего тензоры:

import tensorflow as tf def gen(): for i in range(3): yield tf.constant([1, 2, 3]) ds = tf.data.Dataset.from_generator( gen, output_signature=tf.TensorSpec(shape=(3,), dtype=tf.int32) ) for elem in ds: print(elem)

Результат выполнения кода:

tf.Tensor([1 2 3], shape=(3,), dtype=int32) tf.Tensor([1 2 3], shape=(3,), dtype=int32) tf.Tensor([1 2 3], shape=(3,), dtype=int32)

Пример

Давайте передадим аргументы в генератор через параметр args:

import tensorflow as tf def gen(n): for i in range(n): yield tf.constant(i, dtype=tf.int32) ds = tf.data.Dataset.from_generator( gen, output_signature=tf.TensorSpec(shape=(), dtype=tf.int32), args=[4] ) for elem in ds: print(elem.numpy())

Результат выполнения кода:

0 1 2 3

Пример

Давайте создадим датасет из генератора строк:

import tensorflow as tf def gen(): yield 'abcde' yield 'model.keras' ds = tf.data.Dataset.from_generator( gen, output_signature=tf.TensorSpec(shape=(), dtype=tf.string) ) for elem in ds: print(elem.numpy().decode('utf-8'))

Результат выполнения кода:

abcde model.keras

Пример

Давайте создадим датасет из генератора пар тензор-метка:

import tensorflow as tf def gen(): for i in range(3): yield tf.constant([1, 2, 3]), tf.constant(i) ds = tf.data.Dataset.from_generator( gen, output_signature=( tf.TensorSpec(shape=(3,), dtype=tf.int32), tf.TensorSpec(shape=(), dtype=tf.int32) ) ) for x, y in ds: print(x.numpy(), y.numpy())

Результат выполнения кода:

[1 2 3] 0 [1 2 3] 1 [1 2 3] 2

Смотрите также

  • класс Dataset,
    который представляет собой набор данных
  • метод from_tensor_slices,
    который создает датасет из тензоров
  • метод from_tensors,
    который создает датасет из одного тензора
  • метод range,
    который создает датасет из диапазона чисел
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить