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