如何将Python数据生成器转换为Tensorflow张量?

问题描述 投票:3回答:2

我有一个数据生成器,我正在从中生成训练图像。我想通过使用这个Python数据生成器将数据提供给Tensorflow模型,但我无法弄清楚如何将生成器转换为Tensorflow张量。我正在寻找类似于Keras'fit_generator()函数的东西。

谢谢!

python tensorflow machine-learning deep-learning keras
2个回答
9
投票

tf.data.Dataset.from_generator()方法提供了一种将Python生成器转换为tf.Tensor对象的方法,该对象评估生成器中的每个连续元素。

假设您有一个生成元组的简单生成器(但也可以生成列表或NumPy数组):

def g():
  yield 1, 10.0, "foo"
  yield 2, 20.0, "bar"
  yield 3, 30.0, "baz"

您可以使用tf.data API将生成器首先转换为tf.data.Dataset,然后转换为tf.data.Iterator,最后转换为tf.Tensor对象的元组。

dataset = tf.data.Dataset.from_generator(g, (tf.int32, tf.float32, tf.string))

iterator = dataset.make_one_shot_iterator()

int_tensor, float_tensor, str_tensor = iterator.get_next()

然后,您可以使用int_tensorfloat_tensorstr_tensor作为TensorFlow模型的输入。有关更多想法,请参阅tf.data programmer's guide


0
投票

当我使用纯Tensorflow时,不需要使用生成器来提供数据。当您使用Keras时,为什么还需要使用Tensorflow样式提供数据?我的意思是Keras的函数适合()。

© www.soinside.com 2019 - 2024. All rights reserved.