本篇文章给大家分享的是有关embedding词向量怎么在pytorch中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
创新互联公司专注于企业全网整合营销推广、网站重做改版、莱西网站定制设计、自适应品牌网站建设、成都h5网站建设、购物商城网站建设、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为莱西等各大城市提供网站开发制作服务。Embedding
词嵌入在 pytorch 中非常简单,只需要调用 torch.nn.Embedding(m, n) 就可以了,m 表示单词的总数目,n 表示词嵌入的维度,其实词嵌入就相当于是一个大矩阵,矩阵的每一行表示一个单词。
emdedding初始化
默认是随机初始化的
import torch from torch import nn from torch.autograd import Variable # 定义词嵌入 embeds = nn.Embedding(2, 5) # 2 个单词,维度 5 # 得到词嵌入矩阵,开始是随机初始化的 torch.manual_seed(1) embeds.weight # 输出结果: Parameter containing: -0.8923 -0.0583 -0.1955 -0.9656 0.4224 0.2673 -0.4212 -0.5107 -1.5727 -0.1232 [torch.FloatTensor of size 2x5]
如果从使用已经训练好的词向量,则采用
pretrained_weight = np.array(args.pretrained_weight) # 已有词向量的numpy self.embed.weight.data.copy_(torch.from_numpy(pretrained_weight))
embed的读取
读取一个向量。
注意参数只能是LongTensor型的
# 访问第 50 个词的词向量 embeds = nn.Embedding(100, 10) embeds(Variable(torch.LongTensor([50]))) # 输出: Variable containing: 0.6353 1.0526 1.2452 -1.8745 -0.1069 0.1979 0.4298 -0.3652 -0.7078 0.2642 [torch.FloatTensor of size 1x10]
读取多个向量。
输入为两个维度(batch的大小,每个batch的单词个数),输出则在两个维度上加上词向量的大小。
Input: LongTensor (N, W), N = mini-batch, W = number of indices to extract per mini-batch Output: (N, W, embedding_dim)
见代码
# an Embedding module containing 10 tensors of size 3 embedding = nn.Embedding(10, 3) # 每批取两组,每组四个单词 input = Variable(torch.LongTensor([[1,2,4,5],[4,3,2,9]])) a = embedding(input) # 输出2*4*3 a[0],a[1]
输出为:
(Variable containing: -1.2603 0.4337 0.4181 0.4458 -0.1987 0.4971 -0.5783 1.3640 0.7588 0.4956 -0.2379 -0.7678 [torch.FloatTensor of size 4x3], Variable containing: -0.5783 1.3640 0.7588 -0.5313 -0.3886 -0.6110 0.4458 -0.1987 0.4971 -1.3768 1.7323 0.4816 [torch.FloatTensor of size 4x3])
以上就是embedding词向量怎么在pytorch中使用,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联成都网站设计公司行业资讯频道。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。