Embedding之padding_idx学习
学习 embedding padding
2023-09-14 09:13:09 时间
题目
padding_idx学习
解释
Embedding类
参数 | 含义 |
---|---|
padding_idx (int, optional) | If specified, the entries at :attr:padding_idx do not contribute to the gradient; therefore, the embedding vector at :attr:padding_idx is not updated during training, |
i.e. it remains as a fixed “pad”. For a newly constructed Embedding,the embedding vector at :attr:padding_idx
will default to all zeros,but can be updated to another value to be used as the padding vector. |
什么意思呢?
意思就是padding_idx默认为None,如果指定的话,则padding_idx对应的参数不会对梯度产生影响,因此在padding_idx处词嵌入向量在训练过程中不会被更新。
举例
# 原段落有有5个单词,分别为
# index : word
# 0 hello
# 1 world
# 2 morning
# 3 goodbye
# 4 sunshine
case1:padding_idx=None
#index=[0,1,2,3,4]分别代表上述单词
seq = torch.tensor([0,1,2,3,4])
# 创建一个词嵌入模型embed,输入单词数为5,每个单词用3个向量表示
embed = nn.Embedding(5,3,padding_idx=None)
word_embed = embed(seq)
print(f"默认情况下的padding_idx:\n{word_embed}")
case2:padding_idx=0
#index=[0,1,2,3,4]分别代表上述单词
seq = torch.tensor([0,1,2,3,4])
# 创建一个词嵌入模型embed,输入单词数为5,每个单词用3个向量表示
embed = nn.Embedding(5,3,padding_idx=0)
word_embed = embed(seq)
print(f"padding_idx=0:\n{word_embed}")
case3:padding_idx=3
#index=[0,1,2,3,4]分别代表上述单词
seq = torch.tensor([0,1,2,3,4])
# 创建一个词嵌入模型embed,输入单词数为5,每个单词用3个向量表示
embed = nn.Embedding(5,3,padding_idx=3)
word_embed = embed(seq)
print(f"padding_idx=0:\n{word_embed}")
结论:
从这里可以看出padding_idx的作用是使得对应单词的词向量表示为0,比如padding_idx=0,它是让hello代表的词向量表示为0
case4:padding_idx=3,将单词顺序变化
#index=[0,1,2,3,4]分别代表上述单词,将goodbye和sunshine位置调换
seq = torch.tensor([0,1,2,4,3])
# 创建一个词嵌入模型embed,输入单词数为5,每个单词用3个向量表示
embed = nn.Embedding(5,3,padding_idx=3)
word_embed = embed(seq)
print(f"padding_idx=3:\n{word_embed}")
由此更可以确凿是与单词的index有关,而不是与seq本身固有的index有关。
相关文章
- 定时任务框架APScheduler学习详解
- ObjectArx学习笔记-获取某一图层上所有直线
- Java虚拟机学习(4):对象内存分配与回收
- 机器学习入门17 - 嵌套 (Embedding)
- 机器学习之——单变量线性回归
- Flutter 学习汇总
- Python语言学习之pandas:DataFrame二维表的简介、常用函数、常用案例(增删改查排序之选择指定列、根据条件选择特定数据、赋值、列名重命名、修改列数据、处理缺失值、列合并、分组之详细攻略
- Python后端开发岗学习路线是什么
- 如何入门学python,这是很值得借鉴的学习方法
- 【阶段三】Python机器学习16篇:机器学习项目实战:集成模型介绍、随机森林模型的基本原理与随机森林分类模型
- Python项目学习一:项目一:自动添加标签--再次实现
- 【人工智能】深度学习:扩散模型(Diffusion Model) [2]
- 完全未接触过软件测试,各处找学习资源,“沉淀累积”,两个月之后我是怎么实现大厂梦的...
- 深度学习 vs 机器学习 vs 模式识别
- Crawler:基于urllib+requests库+伪装浏览器实现爬取国内知名招聘网站,上海地区与机器学习有关的招聘信息(2018.4.30之前)并保存在csv文件内
- 机器学习从入门到精通(3)—— KNN