pytorch
需要学习权重: embeddings = nn.embedding(词个数,embedding_size)
预先知道权重/使用预训练权重 : embeddings = nn.embedding.from_pretrained(pre_weight)
nn.embedding(num_embeddings,embedding_dim) 可以自动学习每个词对应的权重
num_embeddings : 词嵌入字典大小,即我们的数据里有多少个词
embedding_dim : 每个词嵌入向量的大小,也就是代码里经常出现的embedding_size
Embedding.weight的大小是(num_embeddings,embedding_dim)
word_to_ix = {'hello': 0, 'world': 1} # 论文里说的每个词先是one-hot表示
embeds = nn.Embedding(2, 5) # [总共有多少个词,每个词的embedding_size]
hello_idx = torch.LongTensor([word_to_ix['hello']]) # 想要访问某个词的embedding
# 特别注意一下我们需要Variable,因为我们需要访问nn.Embedding里面定义的元素,并且word embeding算是神经网络里面的参数,所以我们需要定义Variable。
hello_idx = Variable(hello_idx) # 这里得到hello这个词的index
hello_embed = embeds(hello_idx) # 得到初始词向量hello的embedding表示
print(hello_embed)