I just followed this tutorial of Keras.io https://keras.io/examples/nlp/semantic_similarity_with_bert/
I can run it and the model works. When i want to save the model with h5 format I have this error :
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
<ipython-input-29-549810e352cb> in <module>()
----> 1 model.save('my_model.h5')
9 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py in get_config(self)
   2252 
   2253   def get_config(self):
-> 2254     raise NotImplementedError
   2255 
   2256   @classmethod
NotImplementedError:
-----------------------------------------------------------------------------
when i want to do the same things with the "SavedModel" format I can save the model but when i try to load it, i have this error:
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/nest.py in assert_same_structure(nest1, nest2, check_types, expand_composites)
    403     _pywrap_utils.AssertSameStructure(nest1, nest2, check_types,
--> 404                                       expand_composites)
    405   except (ValueError, TypeError) as e:
ValueError: The two structures don't have the same nested structure.
First structure: type=dict str={'input_ids': TensorSpec(shape=(None, 5), dtype=tf.int32, name='inputs/input_ids')}
Second structure: type=TensorSpec str=TensorSpec(shape=(None, 128), dtype=tf.int32, name='inputs')
More specifically: Substructure "type=dict str={'input_ids': TensorSpec(shape=(None, 5), dtype=tf.int32, name='inputs/input_ids')}" is a sequence, while substructure "type=TensorSpec str=TensorSpec(shape=(None, 128), dtype=tf.int32, name='inputs')" is not
During handling of the above exception, another exception occurred:
ValueError                                Traceback (most recent call last)
7 frames
<ipython-input-33-ae06d36f12a1> in <module>()
----> 1 new_model = tf.keras.models.load_model('saved_model/my_model2', compile=False)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/saving/save.py in load_model(filepath, custom_objects, compile, options)
    210       if isinstance(filepath, six.string_types):
    211         loader_impl.parse_saved_model(filepath)
--> 212         return saved_model_load.load(filepath, compile, options)
    213 
    214   raise IOError(
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/saving/saved_model/load.py in load(path, compile, options)
    145 
    146   # Finalize the loaded layers and remove the extra tracked dependencies.
--> 147   keras_loader.finalize_objects()
    148   keras_loader.del_tracking()
    149 
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/saving/saved_model/load.py in finalize_objects(self)
    594         layers_revived_from_config.append(node)
    595 
--> 596     _finalize_saved_model_layers(layers_revived_from_saved_model)
    597     _finalize_config_layers(layers_revived_from_config)
    598 
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/saving/saved_model/load.py in _finalize_saved_model_layers(layers)
    783         call_fn = _get_keras_attr(layer).call_and_return_conditional_losses
    784         if call_fn.input_signature is None:
--> 785           inputs = infer_inputs_from_restored_call_function(call_fn)
    786         else:
    787           inputs = call_fn.input_signature[0]
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/saving/saved_model/load.py in infer_inputs_from_restored_call_function(fn)
   1068   for concrete in fn.concrete_functions[1:]:
   1069     spec2 = concrete.structured_input_signature[0][0]
-> 1070     spec = nest.map_structure(common_spec, spec, spec2)
   1071   return spec
   1072 
/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/nest.py in map_structure(func, *structure, **kwargs)
    651   for other in structure[1:]:
    652     assert_same_structure(structure[0], other, check_types=check_types,
--> 653                           expand_composites=expand_composites)
    654 
    655   flat_structure = (flatten(s, expand_composites) for s in structure)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/nest.py in assert_same_structure(nest1, nest2, check_types, expand_composites)
    409                   "Entire first structure:\n%s\n"
    410                   "Entire second structure:\n%s"
--> 411                   % (str(e), str1, str2))
    412 
    413 
ValueError: The two structures don't have the same nested structure.
First structure: type=dict str={'input_ids': TensorSpec(shape=(None, 5), dtype=tf.int32, name='inputs/input_ids')}
Second structure: type=TensorSpec str=TensorSpec(shape=(None, 128), dtype=tf.int32, name='inputs')
More specifically: Substructure "type=dict str={'input_ids': TensorSpec(shape=(None, 5), dtype=tf.int32, name='inputs/input_ids')}" is a sequence, while substructure "type=TensorSpec str=TensorSpec(shape=(None, 128), dtype=tf.int32, name='inputs')" is not
Entire first structure:
{'input_ids': .}
Entire second structure:
.
------------------------------------------------------------------------------
Any ideas?