如何在单个线程中使用多个keras模型?

时间:2018-10-03 12:36:37

标签: python tensorflow keras

我想使用预先训练并保存的keras模型进行预测。我使用以下方法训练了模型并将模型保存到不同线程中的json文件中:

model_json = model.to_json()
with open("model.json", "w") as json_file:
json_file.write(model_json)

当我尝试使用这些模型时,我需要一一阅读并获得预测结果。第一个效果很好。但是,当涉及第二个模型时,我从json文件中读取了该文件并运行model.predict(dataToPredict), 它返回一个错误,指示该图层不是图形的元素。这是错误:

TypeError:无法将feed_dict键解释为张量:Tensor Tensor(“ conv_layer1_input:0”,shape =(?, 1182,1),dtype = float32)不是该图的元素。

我用过

json_file = open(path, 'r')
loaded_model_json = json_file.read()
json_file.close()
with tf.Session():
    model = model_from_json(loaded_model_json)
    predictionResult = model.predict(dataToPredict)

对于每个模型,这次都没有引发错误。但是,似乎模型的权重是随机生成的,而不是从文件中读取的,或者我为此with tf.Session():错误地初始化了它们。这就是为什么我每次使用相同的数据运行它们时都会产生不同的结果的原因。我也尝试使用:

with tf.Graph().as_default():

没有with tf.Session():,但它再次引发了相同的错误。 我对“图形”和“会话”术语感到困惑。我认为keras同时管理图表和会话。如果是,那是什么问题?这是我的预测代码:

predictions = []
for modelFilePath in modelFilePaths:
with tf.Graph().as_default():
    json_file = open(modelFilePath , 'r')
    loaded_model_json = json_file.read()
    json_file.close()
    model = model_from_json(loaded_model_json)
    predictions.append(model.predict(dataToPredict))

0 个答案:

没有答案