当前位置: 首页 > 编程笔记 >

pytorch中的embedding词向量的使用方法

西门建安
2023-03-14
本文向大家介绍pytorch中的embedding词向量的使用方法,包括了pytorch中的embedding词向量的使用方法的使用技巧和注意事项,需要的朋友参考一下

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])

以上这篇pytorch中的embedding词向量的使用方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍基于pytorch 预训练的词向量用法详解,包括了基于pytorch 预训练的词向量用法详解的使用技巧和注意事项,需要的朋友参考一下 如何在pytorch中使用word2vec训练好的词向量 这个方法是在pytorch中将词向量和词对应起来的一个方法. 一般情况下,如果我们直接使用下面的这种: 这种情况下, 因为没有指定训练好的词向量, 所以embedding会帮咱们生成一个随机的词

  • 本文向大家介绍python gensim使用word2vec词向量处理中文语料的方法,包括了python gensim使用word2vec词向量处理中文语料的方法的使用技巧和注意事项,需要的朋友参考一下 word2vec介绍 word2vec官网:https://code.google.com/p/word2vec/ word2vec是google的一个开源工具,能够根据输入的词的集合计算出词与词

  • 文章信息 通过本教程,你可以掌握技能:使用预先训练的词向量和卷积神经网络解决一个文本分类问题 本文代码已上传到Github 本文地址:http://blog.keras.io/using-pre-trained-word-embeddings-in-a-keras-model.html 本文作者:Francois Chollet 什么是词向量? ”词向量”(词嵌入)是将一类将词的语义映射到向量空间

  • 问题内容: 我的目标是为每个文档建立一个索引,将其按单词ngram(uni,bi和tri)分解,然后捕获所有这些单词ngram的术语向量分析。Elasticsearch有可能吗? 例如,对于包含“红色汽车行驶”的文档字段。我将能够获得信息: 提前致谢! 问题答案: 假设您已经了解术语向量API,则可以在索引时间应用带状令牌过滤器,以将这些术语彼此独立地添加到令牌流中。 设置为1(而不是默认值2),

  • 在本教程我们来看一下Mikolov et al中提到的word2vec模型。该模型是用于学习文字的向量表示,称之为“word embedding”。 亮点 本教程意在展现出在TensorfLow中构建word2vec模型有趣、本质的部分。 我们从我们为何需要使用向量表示文字开始。 我们通过直观地例子观察模型背后的本质,以及它是如何训练的(通过一些数学方法评估)。 同时我们也展示了TensorFlo

  • 神经语言模型 神经语言模型 什么是词向量/词嵌入 词向量(word embedding)是一个固定长度的实值向量 词向量是神经语言模型的副产品。 词向量是针对“词”提出的。事实上,也可以针对更细或更粗的粒度来进行推广——比如字向量、句向量、文档向量等 词向量的理解 TODO word2vec 中的数学原理详解(三)背景知识 - CSDN博客 在 NLP 任务中,因为机器无法直接理解自然语言,所以首