【发布时间】:2019-04-21 03:06:54
【问题描述】:
def predictOne(imgPath):
model = load_model("withImageMagic.h5")
image = read_image(imgPath)
test_sample = preprocess(image)
predicted_class = model.predict_classes(([test_sample]))
return predicted_class
我已经训练了一个模型。在这个函数中,我加载我的模型,读取一张新图像,进行一些预处理,最后预测它的标签。
当我运行我的 main.py 文件时,这个函数被调用并且一切顺利。然而,几秒钟后,这个函数将被另一个图像再次调用,我得到这个错误:
'Cannot interpret feed_dict key as Tensor: ' + e.args[0])TypeError:无法将 feed_dict 键解释为 Tensor:Tensor Tensor("Placeholder:0", shape=(5, 5, 1, 32), dtype=float32) 不是此图的元素。
这个功能只在第一次起作用,这很奇怪。我测试了多张图片并得到了相同的行为。
Windows 10 - 带有 keras 的 tensorflow-gpu
【问题讨论】:
-
尝试从函数外部的文件中加载模型,并将
model对象作为函数def predictOne(imgPath, model)的参数。这也会快得多。如果要在函数内部继续加载模型,请在加载模型之前使用from keras import backend as K; K.clear_session()。 -
成功了。将其发布为答案,以便我接受它
-
好的,太好了!我发布了答案。
标签: python tensorflow machine-learning keras prediction