1. 词嵌入
nn.Embedding(num_embeddings, embedding_dim, padding_idx=None,
max_norm=None, norm_type=2.0, scale_grad_by_freq=False,
sparse=False, _weight=None)
-
其为一个简单的 存储固定大小的词典 的 嵌入向量的查找表
- 意思是说,给一个编号,嵌入层就能 返回这个编号对应的嵌入向量(嵌入向量反映了各个编号代表的符号之间的语义关系)
-
输入:一个编号列表,输出:对应的 符号嵌入向量列表。
-
num_embeddings(int)
:词典的大小尺寸,比如总共出现5000个词,那就输入5000。此时index为(0-4999); -
embedding_dim(int)
: 嵌入向量的维度,即用多少维来表示一个符号; -
padding_idx(int,可选)
:比如,输入长度为100,但是每次的句子长度并不一样,后面就需要用统一的数字填充,而这里就是指定这个数字; -
max_norm(float,可选)
:最大范数,如果嵌入向量的范数超过了这个界限,就要进行再归一化; -
norm_type (float, 可选)
:指定利用什么范数计算,并用于对比max_norm,默认为2范数; -
scale_grad_by_freq (boolean, 可选)
:根据单词在mini-batch中出现的频率,对梯度进行放缩,默认为False; -
sparse (bool, 可选)
:若为True,则 与权重矩阵相关的梯度 转变为稀疏张量;
import torch
from torch import nn
# 给单词编索引号
word_to_idx = {'hello':0, 'world':1}
# 得到目标单词索引
lookup_tensor = torch.tensor([word_to_idx['hello']], dtype=torch.long)
embeds = nn.Embedding(num_embeddings=2, embedding_dim=5)
# 传入单词的index,返回对应的嵌入向量
hello_embed = embeds(lookup_tensor)
print(hello_embed)
tensor([[