Search code examples
pythonkerashdf5

Get training hyperparameters from a trained keras model


I am trying to figure out some of the hyperparamters used for training some old keras models I have. They were saved as .h5 files. When using model.summary(), I get the model architecture, but no additional metadata about the model.

When I open this .h5 file in notepad++, most of the file is not human readable, but there are bits that I can understand, for instance;

{"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"}

which is not present in the output printed by model.summary().

Is there a way to make these files human readable or to get a more expanded summary that includes version information and training parameters?


Solution

  • If you want to know the hyperparams of the layers (no of layers, no of neurons in each layer, and activation function used in each layer), you can do:

    model.get_config()
    

    To find out loss function used in training, do:

    model.loss
    

    Additionally, if you want to know the Optimizer used in the training, do:

    model.optimizer
    

    And finally, in order to find out the learning rate used while training, do:

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

    PS: Examples provided above use keras v2.3.1.