【问题标题】:How to design the output layer of word-RNN model with use word2vec embedding如何使用 word2vec 嵌入设计 word-RNN 模型的输出层
【发布时间】:2023-04-19 13:27:01
【问题描述】:

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

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

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

如果我的输出生成 100 维向量,然后我应该使用 gensim similar_by_vector function 找到最近的相似词

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

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

【问题讨论】:

    标签: python tensorflow neural-network recurrent-neural-network word2vec


    【解决方案1】:

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

    logits 序列的加权交叉熵损失(每个示例)。

    • logits:形状为 [batch_size x num_decoder_symbols] 的二维张量列表。
    • 目标:与 logits 长度相同的一维批量 int32 张量列表。
    • weights:一维批量大小的列表 与 logits 长度相同的浮点张量。

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

    【讨论】:

      最近更新 更多