首页 文章

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

提问于
浏览
1

我尝试构建一个相当于Char-RNN的Word-RNN,网络应该在句子中生成下一个单词 .

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

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

我的输出应该生成100-dim矢量然后我应该找到使用gensim similar_by_vector function的最近的相似单词

你能提供一些好的和易于理解的python和tensorflow实现,一些链接到github或发布 .

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

1 回答

  • 1

    您可以输出单词的索引(每个示例),从而避免单热词表示(确实非常大) . 使用tf.contrib.legacy_seq2seq.sequence_loss_by_example

    一系列logits的加权交叉熵损失(每个例子) . logits:形状的2D张量列表[batch_size x num_decoder_symbols] . targets:与logit长度相同的1D批量大小的int32张量列表 . 权重:与logits长度相同的一维批量浮点数的列表 .

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

相关问题