tf.data vs keras.utils.sequence性能

时间:2019-04-25 15:28:04

标签: python tensorflow keras

我正在尝试决定是使用现有的keras.utils.sequence模块还是切换到tf.data。据我了解,tf.data通过overlapping training on GPU with pre-processing on the CPU优化了性能。但这与keras.utils.sequence和keras数据生成器相比如何?从我读过的here看来,它在做同样的事情。切换到tf.data有什么好处?

1 个答案:

答案 0 :(得分:0)

两种方法都将输入数据预处理与模型训练重叠。 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更为广泛,因此寻求帮助以获得更好的性能可能更容易。