如何用Pytorch训练单词嵌入

时间:2018-05-20 13:26:41

标签: python pytorch

我正在尝试学习和练习如何训练使用pytorch嵌入词汇集。

https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html

loss = loss_function(log_probs, torch.tensor([word_to_ix[target]], dtype=torch.long))

在上面的教程示例中,计算了log_probs之间的损失,其为4 x 10张量(上下文字数为4,embedding_dimension为10),而目标的字索引为整数,范围为0到49.

我无法理解为什么代码不能在其上下文嵌入与其目标嵌入之间进行比较,而只是与其类索引进行比较,类索引只是一个没有信息的整数。

我认为必须回到嵌入参数然后调用它,并将其与其上下文进行比较。

这只是因为它仅适用于本教程,还是我误解了某些观点?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

嵌入是训练模型的副产品。模型本身通过监督学习进行训练,以预测下一个单词给出上下文单词。这通常以单热编码器的形式完成(也在该教程中)。 log_probs是模型的输出,它是对数形式的概率,然后与一个热编码器目标进行比较。正确目标字的较高概率对应于较低的损失,而相反,较低的正确目标字的概率将导致较大的损耗信号传播通过网络并改变权重。这就是log_probs与目标进行比较的原因。

相关问题