Python tensorflow中恢复预训练模型的问题

Python tensorflow中恢复预训练模型的问题,python,tensorflow,word2vec,Python,Tensorflow,Word2vec,我运行了TensorFlow中包含的word2vec演示程序,现在尝试从文件中恢复预训练的模型,但它不起作用 我运行了这个脚本文件: 然后我尝试运行此文件: #!/usr/bin/env python import tensorflow as tf FILENAME_META = "model.ckpt-70707299.meta" FILENAME_CHECKPOINT = "model.ckpt-70707299" def main(): with tf.Session()

我运行了TensorFlow中包含的word2vec演示程序,现在尝试从文件中恢复预训练的模型,但它不起作用

我运行了这个脚本文件:

然后我尝试运行此文件:

#!/usr/bin/env python

import tensorflow as tf

FILENAME_META = "model.ckpt-70707299.meta"
FILENAME_CHECKPOINT = "model.ckpt-70707299"


def main():
    with tf.Session() as sess:
        saver = tf.train.import_meta_graph(FILENAME_META)
        saver.restore(sess, FILENAME_CHECKPOINT)


if __name__ == '__main__':
    main()
它失败,并显示以下错误消息

Traceback (most recent call last):
  File "word2vec_restore.py", line 16, in <module>
    main()
  File "word2vec_restore.py", line 11, in main
    saver = tf.train.import_meta_graph(FILENAME_META)
  File "/home/kato/.pyenv/versions/3.5.1/lib/python3.5/site-packages/tensorflow/python/training/saver.py", line 1431, in import_meta_graph
    return _import_meta_graph_def(read_meta_graph_file(meta_graph_or_file))
  File "/home/kato/.pyenv/versions/3.5.1/lib/python3.5/site-packages/tensorflow/python/training/saver.py", line 1321, in _import_meta_graph_def
    producer_op_list=producer_op_list)
  File "/home/kato/.pyenv/versions/3.5.1/lib/python3.5/site-packages/tensorflow/python/framework/importer.py", line 247, in import_graph_def
    op_def = op_dict[node.op]
KeyError: 'Skipgram'
回溯(最近一次呼叫最后一次):
文件“word2vec_restore.py”,第16行,在
main()
文件“word2vec_restore.py”,第11行,主目录
saver=tf.train.import\u meta\u图形(文件名\u meta)
文件“/home/kato/.pyenv/versions/3.5.1/lib/python3.5/site packages/tensorflow/python/training/saver.py”,第1431行,在导入元图中
返回_import_meta_graph_def(读取meta_graph_文件(meta_graph_或_文件))
文件“/home/kato/.pyenv/versions/3.5.1/lib/python3.5/site packages/tensorflow/python/training/saver.py”,第1321行,在导入元图定义中
制片人名单=制片人名单)
文件“/home/kato/.pyenv/versions/3.5.1/lib/python3.5/site packages/tensorflow/python/framework/importer.py”,第247行,在import_graph_def中
op_def=op_dict[node.op]
KeyError:“Skipgram”
我认为我已经理解了TensorFlow的API文档,并且实现了上面的代码。我是否以错误的方式使用了Saver对象?

请尝试以下操作:

saver = tf.train.Saver()
with tf.Session() as sess:
    checkpoint = tf.train.get_checkpoint_state(checkpoint_dir)
    if checkpoint and checkpoint.model_checkpoint_path:
        saver.restore(sess, checkpoint.model_checkpoint_path)

其中
checkpoint\u dir
是指向包含检查点文件的文件夹的路径,而不是指向元或检查点文件的完整路径。Tensorflow从指定的文件夹中选择最新的检查点本身。

我自己解决了这个问题。我想知道“Skipgram”键是从哪里来的,并挖掘了源代码。要解决此问题,只需在顶部添加以下内容:

from tensorflow.models.embedding import gen_word2vec
<>我仍然不明白我在做什么,但是这可能是因为需要加载一个C++相关的库。 谢谢。

第一行出现“ValueError:无需保存变量”时失败。