torch.nn.Embedding的使用
可以理解为先生成一个embedding的映射表,然后讲输入的数字映射为一个向量。
import torch
em = torch.nn.Embedding(10,3) # 定义一个映射表,10*3的二维矩阵
em.weight
# 输出Parameter containing:
'''tensor([
[ 1.0562, 0.2760, -1.5142],
[-0.6971, -0.8868, 0.1590],
[ 0.3772, 0.0452, -0.8226],
[-1.7145, 1.0423, 0.1884],
[ 0.6151, 0.0957, -0.8011],
[-0.3725, 1.3127, -0.1222],
[-0.2561, 0.0910, 0.0966],
[-0.6034, -1.1414, 1.5973],
[ 0.9469, 0.1890, -0.3709],
[-1.5312, -1.0798, -0.2566]], requires_grad=True)
'''
em(torch.tensor([1,2,3,4,5])) # 对向量[1,2,3,4,5]中的每一个元素进行映射为3个自由度的向量
'''输出
tensor([[-0.6971, -0.8868, 0.1590],
[ 0.3772, 0.0452, -0.8226],
[-1.7145, 1.0423, 0.1884],
[ 0.6151, 0.0957, -0.8011],
[-0.3725, 1.3127, -0.1222]], grad_fn=<EmbeddingBackward0>)
'''
可以看到刚好对应的映射表里的下标序号为[1,2,3,4,5]的向量。