我运行了包含在 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++ 编写的相关库。
谢谢。
