San*_*ta7 12 python generator keras tensorflow tf.keras
tf.data 有一个from_generator初始值设定项,它似乎不可扩展。来自官方指南
注意:虽然这是一种方便的方法,但它的可移植性和可扩展性有限。它必须在创建生成器的同一个 python 进程中运行,并且仍然受 Python GIL 的约束。
https://www.tensorflow.org/guide/data#sumption_python_generators
并在官方文档中
注意:Dataset.from_generator() 的当前实现使用 tf.numpy_function 并继承相同的约束。特别是,它需要将与 Dataset 和 Iterator 相关的操作放置在与调用 Dataset.from_generator() 的 Python 程序相同的进程中的设备上。生成器的主体不会在 GraphDef 中序列化,如果您需要序列化模型并在不同的环境中恢复它,则不应使用此方法。
注意:如果生成器依赖于可变全局变量或其他外部状态,请注意运行时可能会多次调用生成器(以支持重复数据集)以及在调用 Dataset.from_generator() 和产生生成器的第一个元素。改变全局变量或外部状态可能会导致未定义的行为,我们建议您在调用 Dataset.from_generator() 之前在生成器中显式缓存任何外部状态。
https://www.tensorflow.org/api_docs/python/tf/data/Dataset#from_generator
然而,生成器是训练非常大量数据的一种相当常见的方法。所以必须有一些替代的最佳实践,但官方的 Tensorflow 数据指南没有提供任何信息。
迭代生成器并将数据写入 TFRecord。然后使用 TFRecordDataset。这是指南。
https://www.tensorflow.org/tutorials/load_data/tfrecord
TF 旨在通过多 GPU 有效地使用这些类型的数据集。
将数据分片到磁盘还可以改善洗牌。
| 归档时间: |
|
| 查看次数: |
314 次 |
| 最近记录: |