如何使用word2vec嵌入设计word-RNN模型的输出层

How to design the output layer of word-RNN model with use word2vec embedding

我尝试构建一个与 Char-RNN 等效的 Word-RNN,网络应该生成句子中的下一个词。

作为输入,我使用预训练的 word2vec 100-dim 向量,隐藏层大小为 200。我的主要问题是输出层,应该如何设计?

在 char-rnn 中,输出它是具有字符概率分布 (softmax) 的词汇表大小(唯一字符数)向量。所以生成下一个字符只是从这个分布中采样。 但是当我的单词词汇量超过 300k 时使用 word2vec 这种方法是不可行的。

如果我的输出生成 100 维向量,然后我应该使用 gensim similar_by_vector function

找到最近的相似词

您能否提供一些好的且易于理解的 python 和 tensorflow 实现,一些 link 到 github 或出版物。

我找到了 similar question,但它没有回答我的问题:

可以输出一个词的索引(per example),从而避免one-hot word representation(确实很大)。使用 tf.contrib.legacy_seq2seq.sequence_loss_by_example:

Weighted cross-entropy loss for a sequence of logits (per example).

  • logits: List of 2D Tensors of shape [batch_size x num_decoder_symbols].
  • targets: List of 1D batch-sized int32 Tensors of the same length as logits.
  • weights: List of 1D batch-sized float-Tensors of the same length as logits.

请注意,它不会减小模型的大小,但会通过计算稀疏编码标签的损失来节省大量内存。可以找到 word-rnn 实现的完整示例 here,他们正是使用这种方法。