加载模型后,model.summary()中的LSTM超参数不可用



我尝试在使用以下命令后加载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)

并通过以下命令打印lr和其他超参数:

loaded_model.summary()

我收到了关于LSTM结构的所有信息。但我没有收到像lr等这样的超参数信息

学习率是模型优化器的一个参数,不包括在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_model
model = load_model('my_model.h5')

或者,如果您使用了save_weights方法(保存层的权重(和to_json方法(仅保存模型的体系结构(,则可以在使用model_from_json:加载回模型后加载回权重

# load the architecture of model from json file ...
# load the weights
model.load_weights('model_weights.h5')

然而,第二种方法中的优化器尚未保存,因此需要重新编译模型(请注意,这意味着优化器的状态将丢失,因此,如果不首先配置优化器,您可能无法轻松地继续训练模型;但是,如果您只想使用该模型进行预测从头开始重新训练模型,则这是可以的(。

我强烈建议阅读Keras常见问题解答中的相关部分:如何保存Keras模型?

最新更新