尝试恢复模型,但tf.train.import_meta_graph(meta_path)会引发错误

ouk*_*hou 5 tensorflow

我从tensorflow模型下载了预训练的mobilenetV2模型,并尝试恢复图形,但出现意外错误.

重现错误的代码非常简洁:

import tensorflow as tf
meta_path = 'path/to/mobilenet_v2_0.35_224/mobilenet_v2_0.35_224.ckpt.meta'
sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True))
saver = tf.train.import_meta_graph(meta_path)
Run Code Online (Sandbox Code Playgroud)

然后最后一行引发错误:

Traceback (most recent call last):
  File "/home/CVAR/study/codes/languages/python/pycharm/learn_tensorflow/train_mobileNet_v2/test_of_functions/saver_test.py", line 21, in <module>
    saver = tf.train.import_meta_graph(meta_path)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/saver.py", line 1960, in import_meta_graph
    **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/meta_graph.py", line 744, in import_scoped_meta_graph
    producer_op_list=producer_op_list)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/util/deprecation.py", line 432, in new_func
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/importer.py", line 391, in import_graph_def
    _RemoveDefaultAttrs(op_dict, producer_op_list, graph_def)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/importer.py", line 158, in _RemoveDefaultAttrs
    op_def = op_dict[node.op]
KeyError: 'InfeedEnqueueTuple'
Run Code Online (Sandbox Code Playgroud)

我的系统信息是:

ubuntu 16.04
python 3.5
tensorflow-gpu 1.9
Run Code Online (Sandbox Code Playgroud)

任何的想法?

小智 3

我最近也遇到这样的问题。原因似乎是您用于训练模型的 TensorFlow 版本与您用于读取图描述原型的版本不同。您需要做的是将 TensorFlow 重新安装到您的训练版本。否则,重新训练模型就可以了。

仅供参考,我用来训练的 TensorFlow 版本是 1.12.0,相比之下,我用来加载图的版本是 1.13.1。重新安装即可解决问题。