【问题标题】:Predict batches using Tensorflow Data API and Keras Model使用 TensorFlow Data API 和 Keras 模型预测批次
【发布时间】:2019-10-16 23:39:54
【问题描述】:

假设我有一个数据集和一个 Keras 模型。数据集已使用 tf Dataset API 中的batch() 分批。现在我正在寻找一种高效且干净的方法来对所有测试样本进行批量预测。

我已经尝试了以下代码并且它有效。

batch_size = 32
dataset = dataset.batch(batch_size)
predictions = keras_model.predict(dataset, steps=math.ceil(num_testing_samples / batch_size))

我想知道有没有更有效和优雅的方法来实现这一点?

【问题讨论】:

    标签: tensorflow keras tensorflow-datasets


    【解决方案1】:

    TF >= 1.14.0

    你可以设置steps=None。来自tf.keras.Model.predict()的官方文档:

    如果 x 是 tf.data 数据集且步骤为 None,则 predict 将运行直到输入数据集用完。

    只要确保您的 dataset 对象未处于重复模式,您就可以开始了 :)。

    TF 1.12.0 & 1.13.0

    这些版本对tf.data.Datasettf.keras 的支持非常差。 tf.data.Dataset 对象被转换为一个迭代器 here,如果你没有设置 steps 参数,它会触发一个错误 here。这是在 1.14.0 中修补的。

    【讨论】:

    • 如果我设置steps=None,会出现如下错误: ValueError: When using iterators as input to a model, you should specify the steps argument。我使用的tensorflow版本是1.12.0
    猜你喜欢
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 2018-03-30
    • 2021-05-17
    • 2021-05-18
    • 1970-01-01
    • 2016-02-16
    相关资源
    最近更新 更多