pytorch加载已训练好的word-embedding

如果是随机初始化的向量,是这么定义的:

1
self.word_embeds = nn.Embedding(vocab_size, embedding_dim)

如果pretrained_weight是已经训练好的词向量,加载方式一如下:

1
2
3
self.word_embeds = nn.Embedding(vocab_size, embedding_dim)
pretrained_weight = np.array(pretrained_weight)
self.embed.weight.data.copy_(torch.from_numpy(pretrained_weight))

https://www.cnblogs.com/bamtercelboo/p/7469005.html

加载方式二:

1
2
3
4
5
6
self.word_embeds = nn.Embedding(vocab_size, embedding_dim)
if pre_word_embeds is not None:
  self.pre_word_embeds = True
self.word_embeds.weight = nn.Parameter(torch.FloatTensor(pre_word_embeds))
else:
self.pre_word_embeds = False