我正在使用 tensorflow
后端通过 keras
训练一些模型。
当我在同一对象上训练后立即调用 predict 时,它工作正常,并为不同的输入提供不同的值。但是当我将模型保存到一个文件,然后从另一个 python
session 加载它时,predict
总是为不同的输入返回相同的值。
我使用 ModelCheckpoint
保存模型,然后使用 load_model
加载。我还尝试使用 to_json
和 model_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_weights
和 load_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/