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

use*_*237 3 python machine-learning deep-learning keras tensorflow

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

谢谢!

mrr*_*rry 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"
Run Code Online (Sandbox Code Playgroud)

您可以使用tf.dataAPI将生成器首先转换为a tf.data.Dataset,然后转换为a 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()
Run Code Online (Sandbox Code Playgroud)

然后int_tensor,您可以使用,float_tensorstr_tensor作为TensorFlow模型的输入.有关更多想法,请参阅tf.data程序员指南.