python - keras > 加载保存的模型后总是相同的预测值

标签 python tensorflow keras

我正在使用 tensorflow 后端通过 keras 训练一些模型。

当我在同一对象上训练后立即调用 predict 时,它工作正常,并为不同的输入提供不同的值。但是当我将模型保存到一个文件,然后从另一个 python session 加载它时,predict 总是为不同的输入返回相同的值。

我使用 ModelCheckpoint 保存模型,然后使用 load_model 加载。我还尝试使用 to_jsonmodel_from_json 函数分别将体系结构保存和加载到 json 文件中。示例代码:

保存部分

with open("model.json", "w") as textFile:
   print(model.to_json(), file = textFile)

model.fit(X_train, y_train, epochs=iterationCount, batch_size=64, validation_split=0.2, callbacks = [ModelCheckpoint(filepath='model.h5', verbose=0, save_best_only=True)])

加载部分

with open('model.json') as json_file:
    model = model_from_json(json_file.read())

model.load_weights('model.h5')

有解决这个问题的想法吗?有什么我想念的吗?

最佳答案

不幸的是,很多人(像我一样)一直在提示 keras bug这会影响 save_weightsload_weights 函数。

我最终避免使用这些功能。如果我想加载/存储我的模型,我只需执行以下操作:

from keras.models import load_model

trained_model.save(file_path)
loaded_model = load_model(file_path)

save 函数可以保存您的权重,还可以保存您的网络结构和优化器的状态(它确保您可以从您暂停的位置准确保留训练模型)。

关于python - keras > 加载保存的模型后总是相同的预测值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48370819/

相关文章:

python Django : Annotating a same name with a database field

python - 使用Vue + Django模板语言时如何解决双花括号问题?

python - numpy knn 与向量化嵌套矩阵

python - Keras顺序时间分布模型2和3个序列之间的极值结果差异

python - GPU 仅被使用 1-5% Tensorflow-gpu 和 Keras

python - Scrapy 飞溅多次点击

python - 选择随机验证数据集

python - 如何使用 TensorFlow 连接两个具有不同形状的张量?

python - GradientTape().gradient() 返回 None 并观察肌腱 - Tensorflow 2

r - 错误消息 AttributeError : module 'tensorflow' has no attribute 'VERSION'