torch.nn.Embedding()

Word Embedding

词嵌入,就是把一个词典,随机初始化映射为一个向量矩阵。
列如:有一组词典,有两个词“hello”和“world”,对应的值为0和1.通过pytorch中的torch.nn.Embedding()建立一个2x10的向量矩阵,其中2表示词典中词的数量,10表示每个词对应的向量大小。

word_to_id = {'hello':0, 'world':1}
embeds = nn.Embedding(2, 10)
hello_idx = torch.LongTensor([word_to_id['hello']])
hello_embed = embeds(hello_idx)
print(hello_embed)

应用pytorch自带的nn.Enbedding构建词嵌入向量。

torch.nn.Embedding(num_embeddings: int, embedding_dim: int, padding_idx: Optional[int] = None, max_norm: Optional[float] = None, norm_type: float = 2.0, scale_grad_by_freq: bool = False, sparse: bool = False, _weight: Optional[torch.Tensor] = None)

num_embeddings:表示词典中词的数量
embedding_dim:表示每个词对应的向量维度

自然语言中使用批处理时候, 每个句子的长度并不一定是等长的, 这时候就需要对较短的句子进行padding, 填充的数据一般是0, 这个时候, 在进行词嵌入的时候就会进行相应的处理, nn.embedding会将填充位置的值映射为0。

padding_idx

padding_idx:表示用于填充的参数索引,比如用3填充,嵌入向量索引为3的向量设置为0

import torch
import torch.nn as nnembed = nn.Embedding(10, 3, padding_idx=3) # padding_idx 默认是0
embed.weight


让我们再举个栗子,所有索引为3的都用0来填充,。

x = torch.tensor([[2, 2, 3, 3], [1, 2, 5, 4]])
embed(x)


也就是说,为了便于模型训练需统一句子长度,对那些句子长度不够的句子进行填充,比如用值3进行填充,当用nn.Embedding()进行词向量嵌入时,对应的索引为3的向量将变为全为0的向量。这样就减少了填充值对模型训练的影响。
把padding_idx设置为填充的值,如padding_idx=3,训练过程中索引为3的将始终设置为0,不进行参数更新.

torch.nn.Embedding()中的padding_idx参数解读相关推荐

  1. torch.nn.Embedding理解

    Pytorch官网的解释是:一个保存了固定字典和大小的简单查找表.这个模块常用来保存词嵌入和用下标检索它们.模块的输入是一个下标的列表,输出是对应的词嵌入. torch.nn.Embedding(nu ...

  2. torch.nn.Embedding的使用

    torch.nn.Embedding 在使用pytorch进行词嵌入使用torch.nn.Embedding()就可以做到 nn.Embedding在pytoch中的解释 class torch.nn ...

  3. nn.Embedding中padding_idx的理解

    每个句子的长度并不一定是等长的, 这时候就需要对较短的句子进行padding, nn.Embedding中padding_idx是指定padding的索引值. #实例化词嵌入对象,序列进行paddin ...

  4. Pytorch 学习(6):Pytorch中的torch.nn Convolution Layers 卷积层参数初始化

    Pytorch 学习(6):Pytorch中的torch.nn  Convolution Layers  卷积层参数初始化 class Conv1d(_ConvNd):......def __init ...

  5. 【Pytorch基础教程28】浅谈torch.nn.embedding

    学习总结 文章目录 学习总结 一.nn.Embedding 二.代码栗子 2.1 通过embedding降维 2.2 RNN中用embedding改进 2.3 deepFM模型中embedding R ...

  6. 模型的第一层:详解torch.nn.Embedding和torch.nn.Linear

    文章目录 1.概述 2.Embedding 2.1 nn.Linear 2.2 nn.Embedding 对比 初始化第一层 1.概述 torch.nn.Embedding是用来将一个数字变成一个指定 ...

  7. pytorch torch.nn.Embedding

    词嵌入矩阵,可以加载使用word2vector,glove API CLASS torch.nn.Embedding(num_embeddings: int, embedding_dim: int, ...

  8. torch.nn.Embedding()的固定化

    问题 最近在运行模型时,结果不稳定,所以尝试修改随机初始化的参数,使参数是随机初始化的,但是每次都一样 发现是用了 self.embed_user = nn.Embedding(user_num, f ...

  9. 正态分布初始化 torch.nn.Embedding.weight()与torch.nn.init.normal()的验证对比

    torch.nn.Embedding.weight(num_embeddings, embedding_dim) 随机初始化,生成标准正态分布N(0,1)N(0,1)N(0,1)的张量Tensor t ...

最新文章

  1. Bzoj2780: [Spoj]8093 Sevenk Love Oimaster
  2. 教你开发省电的 iOS app(WWDC17 观后)
  3. iframe 自动登录_安阳联通利用python实现三集中未反馈工单自动提取
  4. Python中字典get方法的使用
  5. [AHOI2009]中国象棋
  6. python 堆_面试再问你什么是堆和栈,你就把这篇文章甩给他
  7. web 信息模糊检索等 Lucene的实现
  8. 三菱Q系列常用注意事项
  9. php 获取照片信息,PHP如何读取照片的exif信息实现代码(2)
  10. 基于TI Sitara系列AM437x ARM Cortex-A9核心板 处理器
  11. 冬瓜哥直播:小白一小时掌握机器学习底层原理
  12. 京东平台开发者入驻指南
  13. 【牛牛的跳跳棋】dp解法
  14. 史上最强:NumPy 实现全部机器学习算法,代码超3万行!
  15. python双柱状图与双折线图_双坐标实现图标中同时存在柱状图和折线图
  16. iimap服务器没有响应,解决imap被vimIM和谐掉的问题
  17. 数据库常见的安全问题有哪些?
  18. 51单片机制作脉冲发生器
  19. Abaqus之动力分析中的阻尼的设置
  20. 大龙嘚吧嘚之“C#中的类型转换”(前面是铺垫,可以直接跳到最后)

热门文章

  1. 【电子学会】2022年06月图形化四级 -- 判断闰年
  2. 解决SPSS Modeler 18 过期
  3. oracle10g创建数据库的方法
  4. Android adb cannot connect to deamon
  5. 魅力城市:内蒙古满洲里
  6. 期望值(Expect value)
  7. 最近对写博客又有兴趣了?真是随心所欲,想干啥就干啥,别人 (l)说的有一腚的道理... ...
  8. HT66F018 -- HT1621 驱动程序
  9. 郑清 - 日常作息表 - November - 2019
  10. 成员函数对象类的const和非const成员函数的重载