Tensorflow 从Keras模型的predict()方法返回实例id和预测

Tensorflow 从Keras模型的predict()方法返回实例id和预测,tensorflow,keras,tensor,tensorflow-estimator,Tensorflow,Keras,Tensor,Tensorflow Estimator,假设我有一个已经训练过的Keras模型。使用predict()方法时,我希望同时获得实例键值和相应的预测(我可以将键值作为输入中的特征/列传递) 我想知道这样做现实吗?我为此挣扎了一段时间。我使用的是tf.data.Dataset基础设施,所以我的第一个方法是看看是否可以确保数据集生成的示例的顺序是确定的,但这并不是最佳的,因为它放弃了一系列并行处理性能优势,并且在任何情况下都不是这样。我最终使用模型处理预测。在批上预测手动从数据集中迭代出批,而不是将整个数据集输入到模型中。预测。这样,我就能够

假设我有一个已经训练过的Keras模型。使用predict()方法时,我希望同时获得实例键值和相应的预测(我可以将键值作为输入中的特征/列传递)


我想知道这样做现实吗?

我为此挣扎了一段时间。我使用的是
tf.data.Dataset
基础设施,所以我的第一个方法是看看是否可以确保数据集生成的示例的顺序是确定的,但这并不是最佳的,因为它放弃了一系列并行处理性能优势,并且在任何情况下都不是这样。我最终使用
模型处理预测。在批上预测
手动从数据集中迭代出批,而不是将整个数据集输入到
模型中。预测
。这样,我就能够从批处理中获取ID,并将它们与返回的预测关联起来


我感到惊讶的是,对于一个必须经常出现的问题,没有一个更现成的解决方案。我还没有跟上
估计器接口或自定义训练/预测循环的速度,但希望这个问题在那里变得无关紧要。

感谢您的回复!由于可以使用
predict\u on\u batch()
将ID与单个批次的返回预测相关联,我想知道为什么不能使用
predict()将所有ID与所有预测结果相关联
?我认为您必须通过单独运行数据集获取ID,因为对于预测,您只需将整个数据集输入model.predict。如果这些例子在数据集中以不同的顺序出现,他们就不会喜欢这些预测。话虽如此,我们还是有可能让这些例子以同样的顺序出现。tf.data.Dataset.list_文件的默认值是无序读取顺序,但可以指定shuffle=False。值得一提的是,在我的例子中,predict和predict_on_批次之间的推理持续时间并没有太大差异。