我理解word2vec是如何工作的。
我想使用word2vec(skip-gram)作为RNN的输入。输入是嵌入词向量。输出也嵌入了由RNN生成的字向量。
这是个问题!如何将输出向量转换为一个热字向量?我需要嵌入的逆矩阵,但我没有!
答案 0 :(得分:0)
RNN的输出不是嵌入。我们通过乘以适当的矩阵将RNN单元格中最后一层的输出转换为vocabulary_size
的向量。
查看PTB Language Model示例以获得更好的主意。具体来看第133-136行:
softmax_w = tf.get_variable("softmax_w", [size, vocab_size], dtype=data_type())
softmax_b = tf.get_variable("softmax_b", [vocab_size], dtype=data_type())
logits = tf.matmul(output, softmax_w) + softmax_b
以上操作将为您提供logits。此logits是您词汇表中的概率分布。 numpy.random.choice可能会帮助您使用这些日志进行预测。