使用预训练的word2vec初始化Seq2seq嵌入

时间:2015-11-22 05:32:00

标签: tensorflow

我有兴趣用预训练的word2vec初始化tensorflow seq2seq实现。

我见过代码。似乎嵌入已初始化

Cursor

如何将其更改为使用预训练的word2vec初始化

2 个答案:

答案 0 :(得分:7)

我认为你已经在邮件列表中得到了答案,但我把它放在这里供后人使用。

https://groups.google.com/a/tensorflow.org/forum/#!topic/discuss/bH6S98NpIJE

  

您可以随机初始化它,然后执行以下操作:   session.run(embedding.assign(my_word2vec_matrix))

     

这将覆盖init值。

这似乎对我有用。我认为需要trainable=False来保持价值固定吗?

# load word2vec model (say from gensim)
model = load_model(FILENAME, binary=True)

# embedding matrix
X = model.syn0
print(type(X)) # numpy.ndarray
print(X.shape) # (vocab_size, embedding_dim)

# start interactive session
sess = tf.InteractiveSession()

# set embeddings
embeddings = tf.Variable(tf.random_uniform(X.shape, minval=-0.1, maxval=0.1), trainable=False)

# initialize
sess.run(tf.initialize_all_variables())

# override inits
sess.run(embeddings.assign(X))

答案 1 :(得分:0)

您可以更改tensorflow/models/rnn/translate/data_utils.py中存在的tokanizer,以使用预先训练过的word2vec模型进行标记。 187-190的行data_utils.py

if tokenizer:
    words = tokenizer(sentence)
else:
    words = basic_tokenizer(sentence)

使用basic_tokenizer。您可以编写tokenizer方法,该方法使用预先训练的word2vec模型来标记句子。