Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Chapter 12: Loading model is failed when using the custom regularisers, activation, etc #634

Open
vahidNaghshin opened this issue Apr 9, 2024 · 1 comment

Comments

@vahidNaghshin
Copy link

vahidNaghshin commented Apr 9, 2024

Describe the bug
In chapter 12, when working with the custom models, the Keras fails loading the model after saving. It is saved safely (not pure safely as it throws warning indicating the save format should be converted to Keras rather than h5) and after loading it throws an exceptions.

notebook name: 12_custom_models_and_training_with_tensorflow.ipynb
cell numbers: 91

To Reproduce
Please copy the code that fails here, using code blocks like this:

model = keras.models.load_model(
"my_model_with_many_custom_parts.h5",
custom_objects={
"my_l1_regularizer": my_l1_regularizer,
"my_positive_weights": my_positive_weights,
"my_glorot_initializer": my_glorot_initializer,
"my_softplus": my_softplus,
})

And if you got an exception, please copy the full stacktrace here:

[<ipython-input-43-137f634240f5>](https://m6gi76vt7u-496ff2e9c6d22116-0-colab.googleusercontent.com/outputframe.html?vrz=colab_20240405-060114_RC00_622131336#) in <cell line: 1>()
----> 1 model = keras.models.load_model(
      2     "my_model_with_many_custom_parts.h5",
      3     custom_objects={
      4        "my_l1_regularizer": my_l1_regularizer,
      5        "my_positive_weights": my_positive_weights,

2 frames
[/usr/local/lib/python3.10/dist-packages/keras/src/engine/base_layer.py](https://m6gi76vt7u-496ff2e9c6d22116-0-colab.googleusercontent.com/outputframe.html?vrz=colab_20240405-060114_RC00_622131336#) in from_config(cls, config)
    868             return cls(**config)
    869         except Exception as e:
--> 870             raise TypeError(
    871                 f"Error when deserializing class '{cls.__name__}' using "
    872                 f"config={config}.\n\nException encountered: {e}"

TypeError: Error when deserializing class 'Dense' using config={'name': 'dense_1', 'trainable': True, 'dtype': 'float32', 'units': 1, 'activation': {'module': 'builtins', 'class_name': 'function', 'config': 'my_softplus', 'registered_name': 'function'}, 'use_bias': True, 'kernel_initializer': {'module': 'builtins', 'class_name': 'function', 'config': 'my_glorot_initializer', 'registered_name': 'function'}, 'bias_initializer': {'module': 'keras.initializers', 'class_name': 'Zeros', 'config': {}, 'registered_name': None}, 'kernel_regularizer': {'module': 'builtins', 'class_name': 'function', 'config': 'my_l1_regularizer', 'registered_name': 'function'}, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': {'module': 'builtins', 'class_name': 'function', 'config': 'my_positive_weights', 'registered_name': 'function'}, 'bias_constraint': None}.

Exception encountered: Unknown activation function: 'function'. Please ensure you are using a `keras.utils.custom_object_scope` and that this object is included in the scope. See https://www.tensorflow.org/guide/keras/save_and_serialize#registering_the_custom_object for details.

Expected behavior
A clear and concise description of what you expected to happen.

I expect to load model without any error.

Versions (please complete the following information):
I have run it on google colab

  • OS: Nil
  • Python: 3.10.12
  • TensorFlow: 2.15.0
  • Scikit-Learn: 1.2.2
@vahidNaghshin vahidNaghshin changed the title [BUG] Chapter 12: Loading model is failed when using the custom regularisers, [BUG] Chapter 12: Loading model is failed when using the custom regularisers, activation, etc Apr 9, 2024
@vahidNaghshin
Copy link
Author

It seems the error comes from using h5 extension. It is recommended to use Keras format. After using the .keras extension, it is solved!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant