tf.data 与 keras.utils.sequence 性能对比

use*_*278 11 python keras tensorflow

我正在尝试决定是使用现有的 keras.utils.sequence 模块还是切换到 tf.data。据我了解, tf.data 通过将GPU 上的训练与 CPU 上的预处理重叠来优化性能。但这与 keras.utils.sequence 和 keras 数据生成器相比如何?从我在这里阅读的内容来看,它似乎在做同样的事情。切换到 tf.data 有什么好处吗?

AAu*_*ert 12

两种方法都将输入数据预处理与模型训练重叠。keras.utils.sequence这是通过运行多个 Python 进程来实现的,而tf.data是通过运行多个 C++ 线程来实现的。

如果您的预处理是由非 TensorFlow Python 库(例如PIL )完成的,则keras.utils.sequence可能更适合您,因为需要多个进程以避免争用 Python 的全局解释器锁。

如果您可以使用 TensorFlow 操作表达您的预处理,我希望tf.data能提供更好的性能。

其他一些需要考虑的事情:

  • tf.data是为tf.keras构建可扩展输入管道的推荐方法
  • tf.data比 使用更广泛keras.utils.sequence,因此可能更容易搜索获得良好性能的帮助。