tf-keras icon indicating copy to clipboard operation
tf-keras copied to clipboard

Fail to load model with == op (operator.eq)

Open Chizkiyahu opened this issue 10 months ago • 3 comments

System information.

  • Have I written custom code (as opposed to using a stock example script provided in Keras): NO
  • OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Colab
  • TensorFlow installed from (source or binary): binary
  • TensorFlow version (use command below): 2.13 / 2.15.0-dev20230903

Describe the problem.

When the model continues build-in equal like == or operator.eq operator fails in load but when using tf.math.equal is ok

Describe the current behavior.

load when have build-in operator like other build-in + - * /

  • Do you want to contribute a PR? (yes/no): no

Standalone code to reproduce the issue.

gist here

Source code / logs.

TypeError                                 Traceback (most recent call last)
[<ipython-input-5-db50d76d7b09>](https://localhost:8080/#) in <cell line: 2>()
      1 # fails load model
----> 2 create_model_save_predict_load(operator.eq)

9 frames
[<ipython-input-3-c5cb0ac5e529>](https://localhost:8080/#) in create_model_save_predict_load(eq_func)
     12     model.predict([data1, data2])
     13 
---> 14     tf.keras.models.load_model("model.keras")  # fails here when is ==  or operator.eq

[/usr/local/lib/python3.10/dist-packages/keras/src/saving/saving_api.py](https://localhost:8080/#) in load_model(filepath, custom_objects, compile, safe_mode, **kwargs)
    252                 f"with the native Keras format: {list(kwargs.keys())}"
    253             )
--> 254         return saving_lib.load_model(
    255             filepath,
    256             custom_objects=custom_objects,

[/usr/local/lib/python3.10/dist-packages/keras/src/saving/saving_lib.py](https://localhost:8080/#) in load_model(filepath, custom_objects, compile, safe_mode)
    279 
    280     except Exception as e:
--> 281         raise e
    282     else:
    283         return model

[/usr/local/lib/python3.10/dist-packages/keras/src/saving/saving_lib.py](https://localhost:8080/#) in load_model(filepath, custom_objects, compile, safe_mode)
    244             # Construct the model from the configuration file in the archive.
    245             with ObjectSharingScope():
--> 246                 model = deserialize_keras_object(
    247                     config_dict, custom_objects, safe_mode=safe_mode
    248                 )

[/usr/local/lib/python3.10/dist-packages/keras/src/saving/serialization_lib.py](https://localhost:8080/#) in deserialize_keras_object(config, custom_objects, safe_mode, **kwargs)
    726     safe_mode_scope = SafeModeScope(safe_mode)
    727     with custom_obj_scope, safe_mode_scope:
--> 728         instance = cls.from_config(inner_config)
    729         build_config = config.get("build_config", None)
    730         if build_config:

[/usr/local/lib/python3.10/dist-packages/keras/src/engine/training.py](https://localhost:8080/#) in from_config(cls, config, custom_objects)
   3328                 # Revive Functional model
   3329                 # (but not Functional subclasses with a custom __init__)
-> 3330                 inputs, outputs, layers = functional.reconstruct_from_config(
   3331                     config, custom_objects
   3332                 )

[/usr/local/lib/python3.10/dist-packages/keras/src/engine/functional.py](https://localhost:8080/#) in reconstruct_from_config(config, custom_objects, created_layers)
   1503                 while layer_nodes:
   1504                     node_data = layer_nodes[0]
-> 1505                     if process_node(layer, node_data):
   1506                         layer_nodes.pop(0)
   1507                     else:

[/usr/local/lib/python3.10/dist-packages/keras/src/engine/functional.py](https://localhost:8080/#) in process_node(layer, node_data)
   1443                     input_tensors
   1444                 )
-> 1445             output_tensors = layer(input_tensors, **kwargs)
   1446 
   1447             # Update node index map.

[/usr/local/lib/python3.10/dist-packages/keras/src/utils/traceback_utils.py](https://localhost:8080/#) in error_handler(*args, **kwargs)
     68             # To get the full stack trace, call:
     69             # `tf.debugging.disable_traceback_filtering()`
---> 70             raise e.with_traceback(filtered_tb) from None
     71         finally:
     72             del filtered_tb

[/usr/local/lib/python3.10/dist-packages/tensorflow/python/util/dispatch.py](https://localhost:8080/#) in op_dispatch_handler(*args, **kwargs)
   1252         if iterable_params is not None:
   1253           args, kwargs = replace_iterable_params(args, kwargs, iterable_params)
-> 1254         result = api_dispatcher.Dispatch(args, kwargs)
   1255         if result is not NotImplemented:
   1256           return result

TypeError: Missing required positional argument

Chizkiyahu avatar Sep 04 '23 08:09 Chizkiyahu