1

我尝试构建Char-RNN的Word-RNN等价物,网络应该在句子中生成下一个单词。如何使用word2vec嵌入来设计word-RNN模型的输出层

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

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

使我的输出产生100暗淡矢量,然后我应该找到使用gensim similar_by_vector function

最近类似的话,你能提供一些很好的和易于理解的Python和tensorflow实施,一些链接的github或发布。

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

回答

1

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

对于一系列logits(每个示例)的加权交叉熵损失。

  • logits:形状的2D张量列表[batch_size x num_decoder_symbols]。
  • targets:与logits长度相同的1D批处理大小的int32张量的列表。
  • 重量:1D批量大小的列表 与logits长度相同的浮动张量。

注意,它不会降低你的模型的大小,但它通过计算从稀疏编码标签上的损失节省了大量的内存。一个word-rnn实现的完整示例可以在here中找到,它们完全使用这种方法。

相关问题