我正在尝试决定是使用现有的keras.utils.sequence模块还是切换到tf.data。据我了解,tf.data通过overlapping training on GPU with pre-processing on the CPU优化了性能。但这与keras.utils.sequence和keras数据生成器相比如何?从我读过的here看来,它在做同样的事情。切换到tf.data有什么好处?
答案 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
更为广泛,因此寻求帮助以获得更好的性能可能更容易。