[英]load tensorflow model .pb file and folder
As I have saved the model and it contains "assets,saved_model.pb,variables" in a folder name "MODEL_X".因为我保存了 model,它在文件夹名称“MODEL_X”中包含“assets,saved_model.pb,variables”。
now when I set path in tf.keras.models.load_model(file_path)
.现在当我在tf.keras.models.load_model(file_path)
中设置路径时。
it gives an error.它给出了一个错误。
how can I solve it??我该如何解决?
<ipython-input-15-8838bb61f3d3> in <module>
----> 1 new_model = tf.keras.models.load_model(file_path)
~/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/save.py in load_model(filepath, custom_objects, compile)
148 if isinstance(filepath, six.string_types):
149 loader_impl.parse_saved_model(filepath)
--> 150 return saved_model_load.load(filepath, compile)
151
152 raise IOError(
~/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/saved_model/load.py in load(path, compile)
87 # TODO(kathywu): Add saving/loading of optimizer, compiled losses and metrics.
88 # TODO(kathywu): Add code to load from objects that contain all endpoints
---> 89 model = tf_load.load_internal(path, loader_cls=KerasObjectLoader)
90
91 # pylint: disable=protected-access
~/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/saved_model/load.py in load_internal(export_dir, tags, loader_cls)
550 loader = loader_cls(object_graph_proto,
551 saved_model_proto,
--> 552 export_dir)
553 root = loader.get(0)
554 root.tensorflow_version = meta_graph_def.meta_info_def.tensorflow_version
~/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/saved_model/load.py in __init__(self, *args, **kwargs)
116
117 def __init__(self, *args, **kwargs):
--> 118 super(KerasObjectLoader, self).__init__(*args, **kwargs)
119 self._finalize()
120
~/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/saved_model/load.py in __init__(self, object_graph_proto, saved_model_proto, export_dir)
119 self._concrete_functions[name] = _WrapperFunction(concrete_function)
120
--> 121 self._load_all()
122 # TODO(b/124045874): There are limitations with functions whose captures
123 # trigger other functions to be executed. For now it is only guaranteed to
~/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/saved_model/load.py in _load_all(self)
237 # interface.
238 continue
--> 239 node, setter = self._recreate(proto)
240 nodes[node_id] = node
241 node_setters[node_id] = setter
~/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/saved_model/load.py in _recreate(self, proto)
320 if kind not in factory:
321 raise ValueError("Unknown SavedObject type: %r" % kind)
--> 322 return factory[kind]()
323
324 def _recreate_user_object(self, proto):
~/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/saved_model/load.py in <lambda>()
307 """Creates a Python object from a SavedObject protocol buffer."""
308 factory = {
--> 309 "user_object": lambda: self._recreate_user_object(proto.user_object),
310 "asset": lambda: self._recreate_asset(proto.asset),
311 "function": lambda: self._recreate_function(proto.function),
~/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/saved_model/load.py in _recreate_user_object(self, proto)
326 looked_up = revived_types.deserialize(proto)
327 if looked_up is None:
--> 328 return self._recreate_base_user_object(proto)
329 return looked_up
330
~/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/saved_model/load.py in _recreate_base_user_object(self, proto)
214 parent_classes,
215 {'__setattr__': parent_classes[1].__setattr__})
--> 216 return revived_cls._init_from_metadata(metadata) # pylint: disable=protected-access
217
218 return super(KerasObjectLoader, self)._recreate_base_user_object(proto)
~/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/saved_model/load.py in _init_from_metadata(cls, metadata)
295 ragged=metadata['ragged'],
296 batch_input_shape=metadata['batch_input_shape'])
--> 297 revived_obj = cls(**init_args)
298 with trackable.no_automatic_dependency_tracking_scope(revived_obj):
299 revived_obj._config = metadata['config'] # pylint:disable=protected-access
~/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/input_layer.py in __init__(self, input_shape, batch_size, dtype, input_tensor, sparse, name, ragged, **kwargs)
84 'batch_input_shape argument to '
85 'InputLayer, not both at the same time.')
---> 86 batch_size = batch_input_shape[0]
87 input_shape = batch_input_shape[1:]
88 if kwargs:
KeyError: 0`
Get the same error with Tensorflow 2.1.1 in Anaconda3.在 Anaconda3 中使用 Tensorflow 2.1.1 得到相同的错误。 After removing Tensorflow 2.1.1 via Pip and reinstall Tensforflow 2.2.0 the error was gone.通过 Pip 删除 Tensorflow 2.1.1 并重新安装 Tensforflow 2.2.0 后,错误消失了。
Check Version检查版本
import tensorflow
print(tensorflow.__version__)
Uninstall for User and System为用户和系统卸载
/usr/local/anaconda/bin/pip uninstall tensorflow
sudo /usr/local/anaconda/bin/pip uninstall tensorflow
Reinstall重新安装
sudo /usr/local/anaconda/bin/pip install --ignore-installed --upgrade tensorflow --no-cache-dir
On my pc with Arch Linux I got the following problem after the upgrade to 2.2.0:在我的带有 Arch Linux 的电脑上升级到 2.2.0 后出现以下问题:
AttributeError: module 'tensorflow.python.keras.utils.generic_utils' has no attribute 'populate_dict_with_module_objects'
Was fixed by using tf-nightly通过使用 tf-nightly 修复
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.