简体   繁体   English

加载 .pb Tensorflow 模型时出错

[英]Error when Loading a .pb Tensorflow Model

I created a tensorflow model on a Windows 10 machine and saved it using:我在 Windows 10 机器上创建了一个 tensorflow 模型并使用以下方法保存它:

model.save('myfolder')

Inside the folder myfolder I get:在文件夹myfolder我得到:

- saved_model.pb
- Variables folder
- Assets folder

Now I'm trying to load the model in a Linux machine, so I'm passing the folder path as the model path to load it:现在我正在尝试在 Linux 机器中加载模型,所以我将文件夹路径作为模型路径传递来加载它:

model = tf.keras.models.load_model('myfolder')

It actually detects the model but throw this huge error:它实际上检测了模型,但抛出了这个巨大的错误:

2020-09-27 18:43:57.980054: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond/while' has 13 outputs but the _output_shapes attribute specifies shapes for 44 outputs. Output shapes may be inaccurate.
2020-09-27 18:44:02.211495: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond/while' has 13 outputs but the _output_shapes attribute specifies shapes for 44 outputs. Output shapes may be inaccurate.
2020-09-27 18:44:02.376792: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond' has 5 outputs but the _output_shapes attribute specifies shapes for 45 outputs. Output shapes may be inaccurate.
2020-09-27 18:44:16.361762: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond' has 5 outputs but the _output_shapes attribute specifies shapes for 45 outputs. Output shapes may be inaccurate.
2020-09-27 18:44:18.184022: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond/while' has 13 outputs but the _output_shapes attribute specifies shapes for 44 outputs. Output shapes may be inaccurate.
2020-09-27 18:44:18.331177: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond' has 5 outputs but the _output_shapes attribute specifies shapes for 45 outputs. Output shapes may be inaccurate.
2020-09-27 18:44:19.087747: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond/while' has 13 outputs but the _output_shapes attribute specifies shapes for 44 outputs. Output shapes may be inaccurate.
2020-09-27 18:44:22.933245: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond/while' has 13 outputs but the _output_shapes attribute specifies shapes for 44 outputs. Output shapes may be inaccurate.
2020-09-27 18:44:23.074951: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond' has 5 outputs but the _output_shapes attribute specifies shapes for 45 outputs. Output shapes may be inaccurate.
2020-09-27 18:44:28.451176: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond/while' has 13 outputs but the _output_shapes attribute specifies shapes for 44 outputs. Output shapes may be inaccurate.
2020-09-27 18:44:28.597107: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond' has 5 outputs but the _output_shapes attribute specifies shapes for 45 outputs. Output shapes may be inaccurate.
2020-09-27 18:44:33.579605: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond/while' has 13 outputs but the _output_shapes attribute specifies shapes for 44 outputs. Output shapes may be inaccurate.
2020-09-27 18:44:33.742273: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond' has 5 outputs but the _output_shapes attribute specifies shapes for 45 outputs. Output shapes may be inaccurate.
2020-09-27 18:44:51.043732: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond/while' has 13 outputs but the _output_shapes attribute specifies shapes for 44 outputs. Output shapes may be inaccurate.
2020-09-27 18:44:57.151346: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond' has 5 outputs but the _output_shapes attribute specifies shapes for 45 outputs. Output shapes may be inaccurate.
2020-09-27 18:45:00.168905: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond/while' has 13 outputs but the _output_shapes attribute specifies shapes for 44 outputs. Output shapes may be inaccurate.
2020-09-27 18:45:00.312153: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond' has 5 outputs but the _output_shapes attribute specifies shapes for 45 outputs. Output shapes may be inaccurate.
2020-09-27 18:45:01.051383: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond/while' has 13 outputs but the _output_shapes attribute specifies shapes for 44 outputs. Output shapes may be inaccurate.
2020-09-27 18:45:01.190471: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond' has 5 outputs but the _output_shapes attribute specifies shapes for 45 outputs. Output shapes may be inaccurate.
2020-09-27 18:45:01.395016: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond/while' has 13 outputs but the _output_shapes attribute specifies shapes for 44 outputs. Output shapes may be inaccurate.
2020-09-27 18:45:01.542457: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond' has 5 outputs but the _output_shapes attribute specifies shapes for 45 outputs. Output shapes may be inaccurate.
2020-09-27 18:45:05.023475: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond/while' has 13 outputs but the _output_shapes attribute specifies shapes for 44 outputs. Output shapes may be inaccurate.
2020-09-27 18:45:05.235829: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond' has 5 outputs but the _output_shapes attribute specifies shapes for 45 outputs. Output shapes may be inaccurate.
2020-09-27 18:45:05.568045: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond' has 5 outputs but the _output_shapes attribute specifies shapes for 45 outputs. Output shapes may be inaccurate.
2020-09-27 18:45:06.300144: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond/while' has 13 outputs but the _output_shapes attribute specifies shapes for 44 outputs. Output shapes may be inaccurate.
2020-09-27 18:45:06.439828: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond' has 5 outputs but the _output_shapes attribute specifies shapes for 45 outputs. Output shapes may be inaccurate.
2020-09-27 18:45:11.585829: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond/while' has 13 outputs but the _output_shapes attribute specifies shapes for 44 outputs. Output shapes may be inaccurate.
2020-09-27 18:45:11.729289: W tensorflow/core/graph/graph_constructor.cc:772] Node 'cond' has 5 outputs but the _output_shapes attribute specifies shapes for 45 outputs. Output shapes may be inaccurate.
Traceback (most recent call last):
  File "main.py", line 95, in <module>
    model = tf.keras.models.load_model('model')
  File "/home/.local/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/save.py", line 150, in load_model
    return saved_model_load.load(filepath, compile)
  File "/home/.local/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/saved_model/load.py", line 89, in load
    model = tf_load.load_internal(path, loader_cls=KerasObjectLoader)
  File "/home/.local/lib/python3.7/site-packages/tensorflow_core/python/saved_model/load.py", line 541, in load_internal
    export_dir)
  File "/home/.local/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/saved_model/load.py", line 118, in __init__
    super(KerasObjectLoader, self).__init__(*args, **kwargs)
  File "/home/.local/lib/python3.7/site-packages/tensorflow_core/python/saved_model/load.py", line 121, in __init__
    self._load_all()
  File "/home/.local/lib/python3.7/site-packages/tensorflow_core/python/saved_model/load.py", line 239, in _load_all
    node, setter = self._recreate(proto)
  File "/home/.local/lib/python3.7/site-packages/tensorflow_core/python/saved_model/load.py", line 322, in _recreate
    return factory[kind]()
  File "/home/.local/lib/python3.7/site-packages/tensorflow_core/python/saved_model/load.py", line 309, in <lambda>
    "user_object": lambda: self._recreate_user_object(proto.user_object),
  File "/home/.local/lib/python3.7/site-packages/tensorflow_core/python/saved_model/load.py", line 328, in _recreate_user_object
    return self._recreate_base_user_object(proto)
  File "/home/.local/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/saved_model/load.py", line 216, in _recreate_base_user_object
    return revived_cls._init_from_metadata(metadata)  # pylint: disable=protected-access
  File "/home/.local/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/saved_model/load.py", line 297, in _init_from_metadata
    revived_obj = cls(**init_args)
  File "/home/.local/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/input_layer.py", line 86, in __init__
    batch_size = batch_input_shape[0]
KeyError: 0

I have already searched in Tensorflow issues from GitHub but I haven't found anythin interesting yet.我已经从 GitHub 搜索了 Tensorflow 问题,但我还没有发现任何有趣的东西。 I saw a SO answer recommending create a new model with the weights of the loaded one but I can't even do it because I get the error while the loading.我看到了一个SO 答案,建议使用已加载模型的权重创建一个新模型,但我什至无法做到,因为我在加载时遇到错误。

I just solved the same problem.我刚刚解决了同样的问题。

Check the version of Tensorflow that you are using to train and save your model and the version that you are using to load it.检查用于训练和保存模型的 Tensorflow 版本以及用于加载模型的版本。 They must be the same or, at least, compatible versions .它们必须是相同的,或者至少是兼容的版本

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM