从训练有素的keras模型中获取训练超参数

时间:2018-12-31 15:23:13

标签: python keras hdf5

我正在尝试找出一些用于训练我拥有的旧keras模型的超参数。它们被保存为.h5文件。使用model.summary()时,我得到了模型架构,但是没有关于模型的其他元数据。

当我在记事本++中打开此.h5文件时,大部分文件都不可读,例如,有些地方我可以理解;

  

{“ loss_weights”:null,“ metrics”:[“ accuracy”],“ sample_weight_mode”:   null,“ optimizer_config”:{“ config”:{“ decay”:0.0,“ momentum”:   0.8999999761581421,“ nesterov”:false,“ lr”:9.999999747378752e-05},“ class_name”:“ SGD”},“ loss”:“ binary_crossentropy”}

model.summary()打印的输出中不存在。

是否有办法使这些文件易于阅读或获得包含版本信息和培训参数的更扩展的摘要?

3 个答案:

答案 0 :(得分:2)

我认为您想要的是模型配置,您可以通过以下方式获得它们:

model.get_config()

它返回描述模型配置的“人类可读” JSON字符串。您可以使用它来重建模型并再次对其进行训练,或者进行更改。

答案 1 :(得分:2)

如果你想知道层的超参数(层数,每层神经元数,每层使用的激活函数),你可以这样做:

model.get_config()

要找出训练中使用的损失函数,请执行以下操作:

model.loss

此外,如果您想了解训练中使用的Optimizer,请执行以下操作:

model.optimizer

最后,为了找出训练时使用的学习率,请执行以下操作:

from keras import backend as K
K.eval(m.optimizer.lr)

PS:上面提供的示例使用 keras v2.3.1。

答案 2 :(得分:1)

配置 - model.get_config()

优化器配置 - model.optimizer.get_config()

训练配置model.history.params(如果模型被保存并重新加载,这将为空)

损失函数 - model.loss