【问题标题】:Get training hyperparameters from a trained keras model从经过训练的 keras 模型中获取训练超参数
【发布时间】: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 文件通常包含有关模型的所有信息,包括配置。

标签: python keras hdf5


【解决方案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

      【讨论】:

        猜你喜欢
        • 2021-09-27
        • 2017-07-28
        • 1970-01-01
        • 1970-01-01
        • 2021-01-03
        • 2017-05-11
        • 1970-01-01
        • 1970-01-01
        • 2019-06-23
        相关资源
        最近更新 更多