nn.Embedding
经常用到的参数是nn.Embedding(num_embeddings, embedding_dim)
其中,num_embeddings代表字典中一共有多少个词语, embedding_dim代表你想要为每个词创建一个多少维的向量,这样在使用的时候,会为每一个特定的词语赋予一共向量。
示例
import torch
from torch import nn
embedding = nn.Embedding(5, 4) # 假定字典中只有5个词,词向量维度为4
word = [[1, 2, 3],
[2, 3, 4]] # 每个数字代表一个词,例如 {'!':0,'how':1, 'are':2, 'you':3, 'ok':4}
#而且这些数字的范围只能在0~4之间,因为上面定义了只有5个词
embed = embedding(torch.LongTensor(word))
print(embed)
print(embed.size())
输出
tensor([[[-0.4093, -1.0110, 0.6731, 0.0790],
[-0.6557, -0.9846, -0.1647, 2.2633],
[-0.5706, -1.1936, -0.2704, 0.0708]],
[[-0.6557, -0.9846, -0.1647, 2.2633],
[-0.5706, -1.1936, -0.2704, 0.0708],
[ 0.2242, -0.5989, 0.4237, 2.2405]]], grad_fn=<EmbeddingBackward>)
torch.Size([2, 3, 4])
与nn.Linear的比较
未完待续......
参考文献:
[1]nn.Embedding - 知乎
|