-
S1=“你是个栽娃”,S2=“我是中国人” L1=[“你”,“是”,“个”,“栽”,“娃”],L2=[“我”,“是”,“中”,“国”,“人”] L_total=[“你”,“是”,“个”,“栽”,“娃”,“我”,“中”,“国”,“人”] -
对L_total进行编号放到一个字典中 dict={“你”:0,“是”:1,“个”:2,“栽”:3,“娃”:4,“我”:5,“中”:6,“国”:7,“人”:8} -
有这样一个新的句子 "我是栽娃"对应的编号组成向量[4,1,2,3] (正常情况下会有个固定的向量长度,长度不够的会用"pad"填充,考虑到测试集中还会出现别的训练集没出现的字,还有有个”unk"来填充) 这里暂且不考虑这些情况。 -
pytorch中的torch.nn有这样一个类Embedding embedding= nn.Embedding(dict_len,Embedding_dim) dict_len:代表的是你的训练集组成词典的总长度 Embedding_dim:就是把[4,1,2,3]中的一个item化为Embedding_dim长度的向量
import torch.nn as nn
import torch
dict1={"你":0,"是":1,"个":2,"栽":3,"娃":4,"我":5,"中":6,"国":7,"人":8}
Embedding_dim=50
dict_len=len(dict1)
embedding= nn.Embedding(dict_len,Embedding_dim)
input=[[4,1,2,3]]
input = torch.LongTensor(input)
print(input.size())
x=embedding(input)
print(x.size())
- 可以这样想有个长方形(1,4)想象成长方体的一个面,然后你把这个4向后扩充,变为一个(1,4,50)的长方体。
|