【发布时间】:2020-09-28 09:18:50
【问题描述】:
我有一个训练有素的 keras 模型和一个实现 keras.utils.Sequence 的自定义数据集。 现在对于给定的数据集,我想预测模型输出并将其保存为 numpy 数组以供进一步计算。现在我需要验证数据的顺序,以便我知道哪个预测属于哪个输入数据。我想使用尽可能多的内置功能来利用 keras 的 gpu 和并行计算能力。
我的代码:
# load model
model = keras.models.load_model(model_path)
# data is my Dataset, implementing tensorflow.keras.utils.Sequence
print(data.current_epoch_index_order[:10])
predictions = model.predict(data, verbose=2)
print(data.current_epoch_index_order[:10])
# save predictions as npz
我自己在我的 DataSet 中洗牌,current_epoch_index_order 是我在内部保持顺序的方式。在on_epoch_end 中,我再次对批处理索引进行洗牌。
predict 之前和之后的 print 语句正在打印不同的内容,如果在 predict() 计算了预测之后数据被打乱,这是可以的。
我现在可以假设对 current_epoch_index_order 的第一次调用是我正在搜索的 id 顺序,但是我该如何验证呢?
我尝试在序列的数据集实现中插入 print() 语句,但不知何故它们没有被打印出来。
我不可能是唯一一个为此苦苦挣扎的人,对吗?
【问题讨论】:
标签: python tensorflow keras