使用keras模型和prefetch_to_device

时间:2018-11-16 08:18:33

标签: asynchronous keras gpu tensorflow-datasets inference

我已经使用Keras API构建并训练了一个模型。现在,我需要创建一个有效的框架来对大量输入样本进行推理。棘手的部分是,并非所有样本都从一开始就可用,而是在推断时根据先前样本的结果进行选择。

我可以为此创建一个基本的管道,一个过程选择要放入队列的样本,第二个过程来检索并预处理它们。然后,这些样本将通过Keras的model.predict_on_batch(batch)馈送到GPU上的模型(开始时仅初始化一次)。
但是,这将非常慢。我宁愿在GPU上有一个小的队列,以便在下一批从RAM转移到GPU时没有加载时间。

使用Tensorflow Dataset API和prefetch_to_device [1]似乎可以实现。但是,将Dataset API与Keras模型一起使用进行推断似乎也不是直接的:

  1. 已多次询问对tf.data.Dataset的推论:[2,[3],但是答案在给定的代码片段旁边并没有真正的解释性。另外,我不确定如何为我的Keras模型检查点.hdf5-文件使用建议。
  2. 如何在第一个过程每次选择新样本时不重新生成或重新加载图而异步馈送数据集? [4],[5]

我不熟悉没有keras抽象的普通tensorflow代码,因此我可能已经监督了参考文献中显而易见的内容。非常感谢您提供详细的解释或指向更多资源的指示。

0 个答案:

没有答案