Python 如何将word2vec导入TensorFlow Seq2Seq模型?

Python 如何将word2vec导入TensorFlow Seq2Seq模型?,python,tensorflow,Python,Tensorflow,我正在玩Tensorflow序列到序列的转换模型。我想知道是否可以将我自己的word2vec导入此模型?而不是使用教程中提到的原始“密集表示” 在我看来,TensorFlow似乎在使用seq2seq模型的一种热表示。首先,对于函数tf.nn.seq2seq.embedding_attention_seq2seq,编码器的输入是一个标记化符号,例如,“a”将是“4”,而“dog”将是“15715”等,需要num_编码器符号。所以我认为它让我提供了单词的位置和单词的总数,然后这个函数可以用一个热的表

我正在玩Tensorflow序列到序列的转换模型。我想知道是否可以将我自己的word2vec导入此模型?而不是使用教程中提到的原始“密集表示”

在我看来,TensorFlow似乎在使用seq2seq模型的一种热表示。首先,对于函数
tf.nn.seq2seq.embedding_attention_seq2seq
,编码器的输入是一个标记化符号,例如,“a”将是“4”,而“dog”将是“15715”等,需要num_编码器符号。所以我认为它让我提供了单词的位置和单词的总数,然后这个函数可以用一个热的表示法来表示单词。我还在学习源代码,但很难理解


有人能给我一个关于上述问题的想法吗?

seq2seq嵌入函数确实创建了与word2vec非常相似的嵌入矩阵。它们是一个名为sth的变量,如下所示:

嵌入\u KEY=“嵌入\u注意\u seq2seq/RNN/EmbeddingWrapper/EMBEDDING”

知道了这一点,就可以修改这个变量。我的意思是——以某种格式获取word2vec向量,比如文本文件。假设您的词汇表位于model.vocab中,那么您可以按照下面的代码片段所示的方式分配读取向量(这只是一个代码片段,您必须对其进行更改以使其正常工作,但我希望它能说明这一点)


我想Matthew提到的范围样式可以得到变量:

 with tf.variable_scope("embedding_attention_seq2seq"):
        with tf.variable_scope("RNN"):
            with tf.variable_scope("EmbeddingWrapper", reuse=True):
                  embedding = vs.get_variable("embedding", [shape], [trainable=])
另外,我想您也会希望将嵌入注入解码器,其密钥(或作用域)如下所示:

“嵌入\注意\序列2Seq/嵌入\注意\解码器/嵌入”


谢谢你的回答,卢卡斯

我想知道,代码片段
model.vocab[word]
到底代表什么?只是单词在词汇表中的位置


在这种情况下,遍历词汇表并为w2v模型中存在的单词注入w2v向量不是更快吗。

非常有用的建议。但我仍然想知道原始嵌入文件存储在哪里?为什么使用像
这样的作用域方法与vs.variable\u作用域(作用域或类型(self)。\uuuu name\uuuu):
我认为最简单的方法是从某处加载某个嵌入式向量文件。再次感谢您的帮助:)那么“PAD”、“EOS”和“GO”标签呢?那些去哪里了?
 with tf.variable_scope("embedding_attention_seq2seq"):
        with tf.variable_scope("RNN"):
            with tf.variable_scope("EmbeddingWrapper", reuse=True):
                  embedding = vs.get_variable("embedding", [shape], [trainable=])