首页 > 其他分享 >pytorch(9.7) keras-Embedding 嵌入层

pytorch(9.7) keras-Embedding 嵌入层

时间:2023-10-17 13:33:18浏览次数:33  
标签:编码 嵌入 每个 权重 单词 pytorch Embedding 9.7 向量

https://www.tensorflow.org/text/guide/word_embeddings

将文本表示为数字

机器学习模型将向量(数字数组)作为输入。处理文本时,您必须做的第一件事是想出一种策略,将字符串转换为数字(或“矢量化”文本),然后再将其输入模型。

1独热编码

作为第一个想法,您可能会对词汇表中的每个单词进行“one-hot”编码。考虑一下“猫坐在垫子上”这句话。这句话中的词汇(或独特的单词)是(cat、mat、on、sat、the)。为了表示每个单词,您将创建一个长度等于词汇表的零向量,然后在与该单词对应的索引中放置一个 1。这种方法如下图所示。

 要点:这种方法效率低下。one-hot 编码向量是稀疏的(意味着大多数索引为零)。想象一下您的词汇表中有 10,000 个单词。要对每个单词进行 one-hot 编码,您需要创建一个 99.99% 的元素为零的向量。

 

2用唯一的数字对每个单词进行编码

您可以尝试的第二种方法是使用唯一的数字对每个单词进行编码。继续上面的示例,您可以将 1 分配给“cat”,2 分配给“mat”,依此类推。然后,您可以将句子“The cat sat on the mat”编码为密集向量,如 [5, 1, 4, 3, 5, 2]。这种方法是有效的。现在您拥有一个密集向量(其中所有元素都已满),而不是稀疏向量。

然而,这种方法有两个缺点:

  • 整数编码是任意的(它不捕获单词之间的任何关系)。

  • 整数编码对于模型的解释来说可能具有挑战性。例如,线性分类器学习每个特征的单个权重。因为任意两个单词的相似度与其编码的相似度之间没有关系,所以这种特征权重组合是没有意义的。

3词嵌入

词嵌入为我们提供了一种使用高效、密集表示的方法,其中相似的词具有相似的编码。重要的是,您不必手动指定此编码。

嵌入是浮点值的密集向量(向量的长度是您指定的参数)。

它们不是手动指定嵌入的值,而是可训练参数(模型在训练期间学习的权重,就像模型学习密集层的权重一样)。

通常会看到 8 维的词嵌入(对于小型数据集),在处理大型数据集时最多可达 1024 维。更高维度的嵌入可以捕获单词之间的细粒度关系,但需要更多数据来学习。

 

 上图是词嵌入的图。每个单词都表示为浮点值的 4 维向量。考虑嵌入的另一种方式是“查找表”。学习了这些权重后,您可以通过在表中查找其对应的密集向量来对每个单词进行编码。

 

https://zh.d2l.ai/chapter_recurrent-modern/seq2seq.html

 

 

 嵌入层的权重是一个矩阵, 其行数等于输入词表的大小(vocab_size), 其列数等于特征向量的维度(embed_size)。

 对于任意输入词元的索引i, 嵌入层获取权重矩阵的第i行(从0开始)以返回其特征向量。

标签:编码,嵌入,每个,权重,单词,pytorch,Embedding,9.7,向量
From: https://www.cnblogs.com/gooutlook/p/17769461.html

相关文章

  • pytorch官网方法安装报错 | 【解决方法】
    pytorch官网给出了两种安装方法condapytorch,去这里检查conda的pytorch的历史版本piptorch,去这里检查pip的torch的历史版本pytorch和torch的区别pip的torch集成了pytorch(cpu版的pytorch)和pytorch-cuda(GPU版的pytorch),所以只需要pipinstalltorch即可conda则是需要......
  • pytorch(10.2) 注意力汇聚理论
     https://zh.d2l.ai/chapter_attention-mechanisms/nadaraya-waston.html  https://zhuanlan.zhihu.com/p/265108616 Attention注意力机制与self-attention自注意力机制 Attention注意力机制与self-attention自注意力机制1.为什么要因为注意力机制在Attention诞......
  • pytorch(9-1) 门控循环单元
     复杂实现 importtorchfromtorchimportnnfromtorch.nnimportfunctionalasFfromd2limporttorchasd2lfromAPI_86import*#1-1初始化权重Wbdefget_params(vocab_size,num_hiddens,device):num_inputs=num_outputs=vocab_sized......
  • 【地表最强】深度学习环境配置攻略 | 【nvidia-driver】, 【cuda toolkit】, 【cudnn
    更新截止到2023.10.161.要素:linux(ubuntu22.04)nvidia-driver(也叫做cudadriver):英伟达GPU驱动,命令:nvidia-smicuda(也叫做cudatoolkit):这个必须有。CUDA是NVIDIA创建的一个并行计算平台和编程模型(用这个来跑深度学习),命令:nvcc-Vcudnn:nvidia开发的深度学习算子库,用......
  • pytorch的 jit功能不应该叫aot功能吗?
    jit简介pytorch的jit功能是为了生成类似于计算图的功能,能加快模型速度,便于部署,属于是取tensorflow之长补自己之短。jit由来之所以叫jit,是因为他仍然属于实时解释的范畴,但是能预先生成中间量,“审时度势”地实时运行。参考可以看这位帖子:https://zhuanlan.zhihu.com/p/65088592......
  • PyTorch之线性回归模型
    1简介1.1线性回归模型简介线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y=wx+e,e为误差服从均值为0的正态分布。其中只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,称为一元......
  • Dual Graph enhanced Embedding Neural Network for CTR Prediction
    目录概DG-ENNGuoW.,SuR.,TanR.,GuoH.,ZhangY.,LiuZ.,TangR.andHeX.Dualgraphenhancedembeddingneuralnetworkforctrprediction.KDD,2021.概图网络用在精排上,作者的出发点是为了解决(user/item)特征的稀疏性和用户交互序列的稀疏性,不过这出......
  • 在Python中使用LSTM和PyTorch进行时间序列预测|附代码数据
    全文链接:http://tecdat.cn/?p=8145最近我们被客户要求撰写关于LSTM的研究报告,包括一些图形和统计输出。顾名思义,时间序列数据是一种随时间变化的数据类型。例如,24小时内的温度,一个月内各种产品的价格,一年中特定公司的股票价格诸如长期短期记忆网络(LSTM)之类的高级深度学习模型能......
  • 《动手学深度学习 Pytorch版》 8.6 循环神经网络的简洁实现
    importtorchfromtorchimportnnfromtorch.nnimportfunctionalasFfromd2limporttorchasd2lbatch_size,num_steps=32,35train_iter,vocab=d2l.load_data_time_machine(batch_size,num_steps)8.6.1定义模型num_hiddens=256rnn_layer=nn.RNN(len(......
  • pytorch(8-6) 循环神经网络的简洁实现
     https://zh.d2l.ai/chapter_recurrent-neural-networks/rnn-concise.html# 86循环神经网络的简洁.pyimporttorchfromtorchimportnnfromtorch.nnimportfunctionalasFfromd2limporttorchasd2lfromAPI_86import*batch_size,num_steps=32,35tra......