我想使用预训练和保存的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 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)

对于每个模型,这次没有引起错误 . 但是,似乎 weights of the models are randomly generated, not read from the file 或者我错误地将它们初始化为 with tf.Session(): . 这就是为什么每次我使用相同的数据运行它们时会产生不同的结果 . 我也试过用:

with tf.Graph().as_default():

没有 with tf.Session(): 但它再次引发了同样的错误 . 我对"graph"和"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))