embedding 使用

根据我遇到的情况来说 首先要进行labelencoder 把每个不同的词变成变成从0开始的数字,torch.nn.embedding中的第一个参数 就是 数字个数。

例如 i think i am a good student 一共6个不同的单词0-5

from sklearn.preprocessing import LabelEncoder
s=['i' ,'think' ,'i' ,'am', 'a' ,'good' ,'student']
lbe = LabelEncoder()
s=lbe.fit_transform(s)

结果为s= [3 5 3 1 0 2 4]

然后加入代码

embedding = nn.Embedding(3, 4)
input = torch.LongTensor(s)
print(embedding(input))

报错!!!!!!!

第一个参数是3 代表你的s里最大的值需要是2 ,现在最大的值为5,则需要至少是6,如果把s里面的4改成7,则第一个参数还要改成8(最少是8,9也行),根据最大的数字来的。不过不知道设置的很大会怎么样。

tensor([[-0.4240,  1.0930,  0.2586],
        [ 0.0615, -2.4276, -1.4686],
        [-0.4240,  1.0930,  0.2586],
        [ 1.0664,  0.5222, -0.0724],
        [-2.6286, -0.0839, -0.0070],
        [ 2.4751, -0.2994,  0.5401],
        [ 1.1925, -0.6344, -1.5841]]

经过改成6 输入这个,第一行第三行相同,代表3这个数字,即i单词。

查的时候怎么查呢

这是个权重矩阵,需要训练的,如果要查i,就是先查他对应的索引,索引对应一行。

padding_index不为空的话就把那行回应的向量变成0.

例如 padding_idx=0,表示0对应的那行 就是单词a 给他变成0,具体用处还没学。

这个是用labelencoder使用embedding

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值