torch.nn.Embedding()中的padding_idx参数解读
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参数解读相关推荐
- torch.nn.Embedding理解
Pytorch官网的解释是:一个保存了固定字典和大小的简单查找表.这个模块常用来保存词嵌入和用下标检索它们.模块的输入是一个下标的列表,输出是对应的词嵌入. torch.nn.Embedding(nu ...
- torch.nn.Embedding的使用
torch.nn.Embedding 在使用pytorch进行词嵌入使用torch.nn.Embedding()就可以做到 nn.Embedding在pytoch中的解释 class torch.nn ...
- nn.Embedding中padding_idx的理解
每个句子的长度并不一定是等长的, 这时候就需要对较短的句子进行padding, nn.Embedding中padding_idx是指定padding的索引值. #实例化词嵌入对象,序列进行paddin ...
- Pytorch 学习(6):Pytorch中的torch.nn Convolution Layers 卷积层参数初始化
Pytorch 学习(6):Pytorch中的torch.nn Convolution Layers 卷积层参数初始化 class Conv1d(_ConvNd):......def __init ...
- 【Pytorch基础教程28】浅谈torch.nn.embedding
学习总结 文章目录 学习总结 一.nn.Embedding 二.代码栗子 2.1 通过embedding降维 2.2 RNN中用embedding改进 2.3 deepFM模型中embedding R ...
- 模型的第一层:详解torch.nn.Embedding和torch.nn.Linear
文章目录 1.概述 2.Embedding 2.1 nn.Linear 2.2 nn.Embedding 对比 初始化第一层 1.概述 torch.nn.Embedding是用来将一个数字变成一个指定 ...
- pytorch torch.nn.Embedding
词嵌入矩阵,可以加载使用word2vector,glove API CLASS torch.nn.Embedding(num_embeddings: int, embedding_dim: int, ...
- torch.nn.Embedding()的固定化
问题 最近在运行模型时,结果不稳定,所以尝试修改随机初始化的参数,使参数是随机初始化的,但是每次都一样 发现是用了 self.embed_user = nn.Embedding(user_num, f ...
- 正态分布初始化 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 ...
最新文章
- Bzoj2780: [Spoj]8093 Sevenk Love Oimaster
- 教你开发省电的 iOS app(WWDC17 观后)
- iframe 自动登录_安阳联通利用python实现三集中未反馈工单自动提取
- Python中字典get方法的使用
- [AHOI2009]中国象棋
- python 堆_面试再问你什么是堆和栈,你就把这篇文章甩给他
- web 信息模糊检索等 Lucene的实现
- 三菱Q系列常用注意事项
- php 获取照片信息,PHP如何读取照片的exif信息实现代码(2)
- 基于TI Sitara系列AM437x ARM Cortex-A9核心板 处理器
- 冬瓜哥直播:小白一小时掌握机器学习底层原理
- 京东平台开发者入驻指南
- 【牛牛的跳跳棋】dp解法
- 史上最强:NumPy 实现全部机器学习算法,代码超3万行!
- python双柱状图与双折线图_双坐标实现图标中同时存在柱状图和折线图
- iimap服务器没有响应,解决imap被vimIM和谐掉的问题
- 数据库常见的安全问题有哪些?
- 51单片机制作脉冲发生器
- Abaqus之动力分析中的阻尼的设置
- 大龙嘚吧嘚之“C#中的类型转换”(前面是铺垫,可以直接跳到最后)
热门文章
- 【电子学会】2022年06月图形化四级 -- 判断闰年
- 解决SPSS Modeler 18 过期
- oracle10g创建数据库的方法
- Android adb cannot connect to deamon
- 魅力城市:内蒙古满洲里
- 期望值(Expect value)
- 最近对写博客又有兴趣了?真是随心所欲,想干啥就干啥,别人 (l)说的有一腚的道理... ...
- HT66F018 -- HT1621 驱动程序
- 郑清 - 日常作息表 - November - 2019
- 成员函数对象类的const和非const成员函数的重载