Я пытаюсь использовать конвейер ввода tf.data, чтобы разрешить выбор набора данных во время выполнения при пакетной обработке данных. Следующее должно позволить мне запустить InitTrain / InitTest, чтобы выбрать, какой набор данных использовать:
TrainData = tf.data.Dataset.from_generator(TrainGenerator,tf.float32)
TestData = tf.data.Dataset.from_generator(TestGenerator,tf.float32)
DataIterator = tf.data.Iterator.from_structure(tf.float32)
DataNext = DataIterator.get_next()
InitTrain = DataIterator.make_initializer(TrainData)
InitTest = DataIterator.make_initializer(TestData)
Я могу использовать следующее, чтобы получить дополненный пакет, если не использую итератор:
TrainData.padded_batch(1000,someshape)
Как я могу выполнить пакетную обработку данных, сохранив возможность выбора источника входных данных?
Возможным обходным путем было бы создать новый набор данных from_generator и создать генератор, который вызывает sessions.run в DataNext, чтобы создать набор данных, который может быть объединен в пакет, однако это приведет к выделению вызовов запуска, поэтому я сомневаюсь, что это именно то, как это было предназначено для использоваться.