我有一个数据生成器,我正在从中生成训练图像。我想通过使用这个Python数据生成器将数据提供给Tensorflow模型,但我无法弄清楚如何将生成器转换为Tensorflow张量。我正在寻找类似于Keras'fit_generator()函数的东西。
谢谢!
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_tensor
,float_tensor
和str_tensor
作为TensorFlow模型的输入。有关更多想法,请参阅tf.data
programmer's guide。
当我使用纯Tensorflow时,不需要使用生成器来提供数据。当您使用Keras时,为什么还需要使用Tensorflow样式提供数据?我的意思是Keras的函数适合()。