Параметризованные генераторы при использовании tf.data.Dataset.from_generator ()

1

Я хотел бы предоставить параметры моему генератору для использования в сочетании с tf.data.Dataset.from_generator(). Например:

def generator(lo, hi):
    for i in range(lo, hi):
        yield float(i)

Этот генератор дает поплавки между lo и hi. Обратите внимание, однако, что при создании набора данных эти параметры никогда не передаются этому генератору.

tf.data.Dataset.from_generator(generator, tf.float64)

Это связано с тем, что параметр генератора tf.data.Dataset.from_generator() должен принимать никаких аргументов.

Любые решения?

Теги:
tensorflow

1 ответ

0
Лучший ответ

Я нашел решение, основанное на концепции функционального программирования, называемой частично прикладными функциями. В итоге:

PAF - это функция, которая выполняет функцию с несколькими параметрами и возвращает функцию с меньшим количеством параметров.

То, как я это сделал, следующее:

from functools import partial
import tensorflow as tf

def generator(lo, hi):
    for i in range(lo, hi):
        yield float(i)

def get_generator(lo, hi):
    return partial(generator, lo, hi)

tf.data.Dataset(get_generator(lo, hi), tf.float64)

Функция get_generator(lo, hi) возвращает частично примененную функцию для генератора, которая фиксирует значения для параметров lo и hi, что на самом деле является генератором без параметров, требуемым tf.data.Dataset.from_generator().

Ещё вопросы

Сообщество Overcoder
Наверх
Меню