pytorch中的Embedding

  • 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())# (1,4)
x=embedding(input)
print(x.size())#(1,4,50)
  • 可以这样想有个长方形(1,4)想象成长方体的一个面,然后你把这个4向后扩充,变为一个(1,4,50)的长方体。
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值