【问题标题】:How to save the tensorflow's word2vec in text/binary file for later use of kNN output?如何将 tensorflow 的 word2vec 保存在文本/二进制文件中以供以后使用 kNN 输出?
【发布时间】:2017-12-18 17:57:17
【问题描述】:

我已经在 tensorflow 中训练了一个 word2vec 模型。但是当我保存会话时,它只输出了model.ckpt.data / .index / .meta 文件。

我正在考虑实施 KNN 方法来检索最近的单词。我看到了使用 gensim 的答案,但是如何首先将我的 tensorflow word2vec 模型保存到 .txt 中?

【问题讨论】:

    标签: machine-learning tensorflow nlp word2vec embedding


    【解决方案1】:

    只需将嵌入矩阵评估为一个 numpy 数组,并将其与解析的单词一起写入文件。示例代码:

    vocabulary_size = 50000
    embedding_size = 128
    
    # Assume your word to index map
    word_to_idx = { ... }
    # Assume your embeddings variable
    embeddings = tf.Variable(tf.random_uniform([vocabulary_size, embedding_size],0,1))
    
    with tf.Session() as sess:
      embeddings_val = sess.run(embeddings)
      with open('embeddings.txt', 'w') as file_:
        for i in range(vocabulary_size):
          embed = embeddings_val[i, :]
          word = word_to_idx[i]
          file_.write('%s %s\n' % (word, ' '.join(map(str, embed))))
    

    【讨论】:

      【解决方案2】:

      我刚遇到同样的问题,并尝试了 Maxim 的解决方案。

      你需要换行:

      word = word_to_idx[i]
      

      word = idx_to_word[i]
      

      您可以使用以下代码简单地反转 word_to_idx-dictionary:

      idx_to_word = dict(zip(word_to_idx.values(), word_to_idx.keys()))
      

      除此之外,他的解决方案运行良好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多