为什么我们将 context_size 与 embedding_dim 相乘?(火炬)

人工智能 自然语言处理 火炬 词嵌入
2021-10-26 17:23:05

我一直在使用 Tensorflow,刚刚开始学习 PyTorch。我正在关注教程:https ://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html#sphx-glr-beginner-nlp-word-embeddings-tutorial-py

我们尝试创建一个 n-gram 语言模型。但是,有一点我不明白。

class NGramLanguageModeler(nn.Module):

    def __init__(self, vocab_size, embedding_dim, context_size):
        super(NGramLanguageModeler, self).__init__()
        self.embeddings = nn.Embedding(vocab_size, embedding_dim)
        self.linear1 = nn.Linear(context_size * embedding_dim, 128)
        self.linear2 = nn.Linear(128, vocab_size)

self.linear1 = nn.Linear(context_size * embedding_dim, 128)为什么我们将embedding_dim 与context_size 相乘embedding_dim 输入大小不是吗?那么为什么我们要乘以上下文大小呢?

1个回答

n-gram 语言模型是用 n 个上下文词训练的语言模型。这意味着您没有为模型提供一个单词,而是 n。这就是为什么输入层的维度是“ context_size * embedding_dim ”或“ n * embedding_dims