embedding_dim (int): the size of each embedding vector
import torch.nn as nn
import torch
embedding = nn.Embedding(10, 3)
string = 'hello world my name is tongkai moon sun dog and'
vocab = string.split()
print(len(vocab))
word_to_idx = {}
word_to_idx = {word: i for i, word in enumerate(vocab)}
print(word_to_idx)
hello_to_tensor = torch.tensor([word_to_idx['hello']], dtype=torch.long)
hello_embed = embedding(hello_to_tensor)
print(hello_embed)
from_pretrained 加载预训练好的词向量
我们在进行具体nlp任务时,一般通过对应的Embedding层做词向量的处理,再拿词向量去进行下游的处理,比如分类啥的,但我们可以使用预训练好的词向量, 比如使用gensim训练好的word2vec词向量,会带来更优的性能。有一点需要注意的是 ,当我们将genism已经训练好的词向量作为自己初始化的词向量,我们可以设置 词向量 是否还有随下游任务进行变动这个参数默认是 将词向量冻结住。
import torch.nn as nn import torch weight = torch.tensor([[1, 2, 3], [4., 5, 6]], dtype=torch.float32) embedding = nn.Embedding.from_pretrained(weight) input = torch.tensor([1], dtype=torch.long) embed = embedding(input) print(embed)



