Skip to main content
 首页 » 编程设计

python之在 tensorflow 中恢复预训练模型时遇到问题

2024年08月22日27xing901022

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

我运行了这个脚本文件: https://github.com/tensorflow/tensorflow/blob/r0.10/tensorflow/models/embedding/word2vec.py

然后我尝试运行这个文件:

#!/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' 

我认为我已经理解了TensorFlow的API文档,并且我按照上面的代码实现了上面的代码。我是否以错误的方式使用了 Saver 对象?

请您参考如下方法:

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

from tensorflow.models.embedding import gen_word2vec 

我仍然不明白我到底在做什么,但也许这是因为需要加载一个用 C++ 编写的相关库。

谢谢。