Я хотел бы предоставить параметры моему генератору для использования в сочетании с 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()
должен принимать никаких аргументов.
Любые решения?
Я нашел решение, основанное на концепции функционального программирования, называемой частично прикладными функциями. В итоге:
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()
.