目录
Embedding(10,3)中的第一个参数10代表的是词表的大小,即词表中不同单词的数量
词表中有10个不同的单词,每个单词都被映射成一个长度为3的向量
- embedding = nn.Embedding(10,3)
- print(embedding)
- input = torch.LongTensor([[1,2,3,4],[4,3,2,9]])
- embedding(input)

- # 构建Embedding类来实现文本嵌入层
- class Embeddings(nn.Module):
- def __init__(self,vocab,d_model):
- """
- :param vocab: 词表的大小
- :param d_model: 词嵌入的维度
- """
- super(Embeddings,self).__init__()
- self.lut = nn.Embedding(vocab,d_model)
- self.d_model = d_model
- def forward(self,x):
- """
- :param x: 因为Embedding层是首层,所以代表输入给模型的文本通过词汇映射后的张量
- :return:
- """
- return self.lut(x) * math.sqrt(self.d_model)
- x = Variable(torch.LongTensor([[100,2,42,508],[491,998,1,221]]))
- emb = Embeddings(1000,512)
- embr = emb(x)
- print(embr.shape)
- print(embr)
- print(embr[0][0].shape)

在代码 emb = Embeddings(1000,512) 中,1000是词表的大小,即词表中不同单词的数量。在这个例子中,词表中有1000个不同的单词,每个单词都被映射成一个长度为512的向量。在实际应用中,词表的大小可能会更大或更小,具体大小取决于使用场景和任务需求
embr.shape为torch.Size([2, 4, 512]),代表有2个句子,每个句子有4个单词,每个单词的embedding维度为512
