我尝试加载一个LSTM模型(由Keras创建),使用以下命令保存模型:
model_json = model.to_json() with open("model.json", "w") as json_file: json_file.write(model_json)
然后使用以下命令加载模型:
json_file = open('model.json', 'r')loaded_model_json = json_file.read()json_file.close()loaded_model = model_from_json(loaded_model_json)
并尝试通过以下命令打印学习率和其他超参数:
loaded_model.summary()
我接收到了关于LSTM结构的所有信息,但没有接收到学习率等超参数的信息。
回答:
学习率是模型优化器的一个参数,不包含在model.summary()
的输出中。如果你想找到学习率的值,可以使用模型的optimizer
属性,并使用K.eval()
来评估学习率张量并获取其实际值:
print(K.eval(model.optimizer.lr))
更新:当你使用to_json
方法时,模型的优化器不会被保存,因此上述解决方案不起作用。如果你想保存整个模型,包括层的权重以及优化器(连同其状态),你可以使用save
方法:
model.save('my_model.h5')
然后你可以使用load_model
加载它:
from keras.models import load_modelmodel = load_model('my_model.h5')
或者,如果你使用了save_weights
方法(保存层的权重)以及to_json
方法(仅保存模型的架构),那么在使用model_from_json
加载模型后,你可以重新加载权重:
# 从json文件加载模型架构 ...# 加载权重model.load_weights('model_weights.h5')
然而,在第二种方法中,优化器没有被保存,因此你需要重新编译模型(请注意,这意味着优化器的状态丢失,因此你可能无法轻易地继续训练模型,除非你首先配置优化器;然而,如果你只想使用模型进行预测或从头开始重新训练模型,这是可以的)。
我强烈推荐阅读Keras常见问题解答中的相关部分:如何保存Keras模型?