shenweichen / DeepMatch

A deep matching model library for recommendations & advertising. It's easy to train models and to export representation vectors which can be used for ANN search.
https://deepmatch.readthedocs.io/en/latest/
Apache License 2.0
2.18k stars 526 forks source link

只能导出h5格式模型,pb格式无法导出 #48

Open shuDaoNan9 opened 3 years ago

shuDaoNan9 commented 3 years ago

只能导出h5格式模型,pb格式无法导出: 导出模型code如下: tf.saved_model.save(model, outputDir + 'YouTubeNet_model2') 或: from tensorflow.python.keras.models import Model, load_model, save_model save_model(model, 'YouTubeNet_model.pb',save_format='tf')

报错如下: Traceback (most recent call last): File "F:/python/DeepMatch-master/examples/run_youtubednn.py", line 70, in tf.saved_model.save(model, outputDir + 'YouTubeNet_model2') File "D:\Anaconda3\envs\TF2\lib\site-packages\tensorflow\python\saved_model\save.py", line 1033, in save obj, signatures, options, meta_graph_def) File "D:\Anaconda3\envs\TF2\lib\site-packages\tensorflow\python\saved_model\save.py", line 1198, in _build_meta_graph return _build_meta_graph_impl(obj, signatures, options, meta_graph_def) File "D:\Anaconda3\envs\TF2\lib\site-packages\tensorflow\python\saved_model\save.py", line 1147, in _build_meta_graphimpl = _SaveableView(checkpoint_graph_view, options) File "D:\Anaconda3\envs\TF2\lib\site-packages\tensorflow\python\saved_model\save.py", line 186, in init self.checkpoint_view.objects_ids_and_slot_variables()) File "D:\Anaconda3\envs\TF2\lib\site-packages\tensorflow\python\training\tracking\graph_view.py", line 444, in objects_ids_and_slot_variables trackable_objects, path_to_root = self._breadth_first_traversal() File "D:\Anaconda3\envs\TF2\lib\site-packages\tensorflow\python\training\tracking\graph_view.py", line 222, in _breadth_first_traversal for name, dependency in self.list_dependencies(current_trackable): File "D:\Anaconda3\envs\TF2\lib\site-packages\tensorflow\python\saved_model\save.py", line 120, in list_dependencies for name, dep in super(_AugmentedGraphView, self).list_dependencies(obj): File "D:\Anaconda3\envs\TF2\lib\site-packages\tensorflow\python\training\tracking\graph_view.py", line 164, in list_dependencies dependencies = obj._checkpoint_dependencies File "D:\Anaconda3\envs\TF2\lib\site-packages\tensorflow\python\training\tracking\data_structures.py", line 510, in _checkpoint_dependencies "non-trackable object; it will be subsequently ignored." % (self,))) ValueError: Unable to save the object ListWrapper([<tensorflow.python.keras.layers.core.Activation object at 0x000002D77C1B6940>, <tensorflow.python.keras.layers.core.Activation object at 0x000002D77C1B6E80>]) (a list wrapper constructed to track trackable TensorFlow objects). A list element was replaced (setitem, setslice), deleted (delitem, delslice), or moved (sort). In order to support restoration on object creation, tracking is exclusively for append-only data structures.

If you don't need this list checkpointed, wrap it in a non-trackable object; it will be subsequently ignored.

Outstandingwinner commented 3 years ago

看issuse已经有5个人提过类似的问题了 目前还没看到有什么可行的解决方案