从经过训练的 keras 模型中获取训练超参数
Posted
技术标签:
【中文标题】从经过训练的 keras 模型中获取训练超参数【英文标题】:Get training hyperparameters from a trained keras model 【发布时间】:2019-05-28 01:50:26 【问题描述】:我正在尝试找出一些用于训练我拥有的一些旧 keras 模型的超参数。它们被保存为 .h5 文件。使用model.summary()
时,我得到了模型架构,但没有关于模型的其他元数据。
当我在 notepad++ 中打开这个 .h5 文件时,大部分文件不是人类可读的,但有些部分我可以理解,例如;
"loss_weights": null, "metrics": ["accuracy"], "sample_weight_mode": 空,“优化器配置”:“配置”:“衰减”:0.0,“动量”: 0.8999999761581421,“nesterov”:假,“lr”:9.999999747378752e-05,“class_name”:“SGD”,“loss”:“binary_crossentropy”
model.summary()
打印的输出中不存在。
有没有办法使这些文件具有可读性,或者获得包含版本信息和训练参数的更广泛的摘要?
【问题讨论】:
你想看哪些超参数? @Matias 我想看看我能看到的一切,不包括特定的权重和偏差。我想重现旧模型,因此有助于了解它是如何训练的。 问题是权重和偏差不是超参数,因此准确了解您的期望会很有用。 H5 文件通常包含有关模型的所有信息,包括配置。 【参考方案1】:我认为您想要的是模型配置,您可以通过以下方式获得这些:
model.get_config()
它返回一个描述模型配置的“人类可读” JSON 字符串。您可以使用它来重建模型并再次训练它,或者进行更改。
【讨论】:
【参考方案2】:如果你想知道层的超参数(层数,每层的神经元数量,每层使用的激活函数),你可以这样做:
model.get_config()
要找出训练中使用的 loss 函数,请执行以下操作:
model.loss
另外,如果您想了解训练中使用的Optimizer,请执行以下操作:
model.optimizer
最后,为了找出训练时使用的学习率,请执行以下操作:
from keras import backend as K
K.eval(m.optimizer.lr)
PS:上面提供的示例使用 keras v2.3.1。
【讨论】:
【参考方案3】:配置 - model.get_config()
优化器配置 - model.optimizer.get_config()
训练配置model.history.params
(如果模型被保存并重新加载,这将为空)
损失函数 - model.loss
【讨论】:
以上是关于从经过训练的 keras 模型中获取训练超参数的主要内容,如果未能解决你的问题,请参考以下文章
Keras训练神经网络进行分类并使用GridSearchCV进行参数寻优
如何在 Keras 中保存经过训练的模型以在应用程序中使用它?