【发布时间】:2020-03-26 14:22:29
【问题描述】:
tf.data 有一个 from_generator 初始化器,它看起来不像是可扩展的。来自官方指南
注意:虽然这是一种方便的方法,但它的局限性在于 可移植性和可扩展性。它必须在同一个 python 进程中运行 它创建了生成器,并且仍然受制于 Python GIL。
https://www.tensorflow.org/guide/data#consuming_python_generators
在官方文档中
注意:Dataset.from_generator() 的当前实现使用 tf.numpy_function 并继承了相同的约束。特别是,它 需要放置与数据集和迭代器相关的操作 与调用的 Python 程序在同一进程中的设备 数据集.from_generator()。生成器的主体不会被序列化 在 GraphDef 中,如果需要,则不应使用此方法 序列化您的模型并在不同的环境中恢复它。
注意:如果生成器依赖于可变的全局变量或其他 外部状态,请注意运行时可能会调用生成器 多次(为了支持重复数据集)并且在任何时候 调用 Dataset.from_generator() 和生产之间的时间 来自生成器的第一个元素。改变全局变量或 外部状态可能导致未定义的行为,我们建议您 在调用之前显式缓存生成器中的任何外部状态 Dataset.from_generator().
https://www.tensorflow.org/api_docs/python/tf/data/Dataset#from_generator
但是,生成器是在大量数据上进行训练的一种相当常见的方法。所以必须有一些替代的最佳实践,但官方的 Tensorflow 数据指南并没有提供任何关于这方面的信息。
【问题讨论】:
-
你发现了什么有用的东西?
标签: python tensorflow keras generator tf.keras