从经过训练的 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 模型中获取训练超参数的主要内容,如果未能解决你的问题,请参考以下文章

Cnn keras模型没有经过训练的参数表示和改进模型

Keras训练神经网络进行分类并使用GridSearchCV进行参数寻优

如何在 Keras 中使用经过训练的模型进行预测

如何在 Keras 中保存经过训练的模型以在应用程序中使用它?

基于经过训练的 Keras 模型在纯 Numpy 中实现有状态 GRU

如何在 GridSearchCV 的 keras 模型的超参数优化中使用简单的验证集?