我在Windows 10计算机上创建了一个tensorflow模型并使用以下命令将其保存:
model.save('myfolder')
在文件夹myfolder
中,我得到:
- saved_model.pb
- Variables folder
- Assets folder
现在我正尝试在Linux机器上加载模型,因此我将文件夹路径作为加载它的模型路径:
model = tf.keras.models.load_model('myfolder')
它实际上检测到了模型,但是抛出了这个巨大的错误:
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
我已经从GitHub搜索了Tensorflow问题,但是还没有发现任何有趣的东西。我看到SO answer推荐使用加载的模型的权重创建一个新模型,但我什至无法这样做,因为在加载过程中会出错。
答案 0 :(得分:1)
我刚刚解决了同样的问题。
检查用于训练的Tensorflow的版本并保存模型以及用于加载模型的版本。它们必须相同,或至少为compatible versions。