LSTM模型加载后,model.summary()中无法查看超参数

我尝试加载一个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模型?

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注