nn.Embedding的作用:
nn.Embedding是用来将一个编码为指定维度的向量,比如数字1变成一个128维的向量,数字2变成另外一个128维的向量。
与one-hot编码区别:
- one-hot编码没有任何的语义信息
- one-hot编码向量的维度等于字典的长度,因此需要使用一个低维稠密的向量来表示词。
nn.Embedding的基本用法
nn.Embeddding
接受两个重要参数:
num_embeddings
:字典的大小。对应上面词典的大小,如果你的词典中包含5000个单词,那么这个字段就填5000embedding_dim
:要将单词编码成多少维的向量
import torch
from torch import nn
##定义一个embedding层
embedding = nn.Embedding(20, 5)
#打印数字0的编码
print('数字0的编码',embedding(torch.LongTensor([0])))
##注意这里在定义embedding的时候,字典的长度为20,所以在进行编码的时候不可以超过19
aa=embedding(torch.tensor(2)).detach() ##这里输入的数不能超过20 detach是去除梯度信息
print('aa的编码',aa.data)