尝试还原模型,但tf.train.import_meta_graph(meta_path)引发错误

时间:2018-08-14 08:05:20

标签: tensorflow

我从tensorflow models下载了经过预训练的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)

然后最后一行引发错误:

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'

我的系统信息是:

ubuntu 16.04
python 3.5
tensorflow-gpu 1.9

有什么主意吗?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

有些操作没有定义。 from conv_blocks import *将解决此错误,但我遇到另一个问题“ ValueError:NodeDef预期的输入'float,int32'与指定的1个输入不匹配;“。仍在调试中,但希望此技巧可以解决您的问题。