nn.Embedding 根据索引生成的向量有权重吗

import torch

import torch.nn as nn

假设有一个大小为 10x3 的 Embedding 层,其中有 10 个单词,每个单词用一个长度为 3 的向量表示

num_words = 10

embedding_dim = 3

创建 Embedding 层

embedding_layer = nn.Embedding(num_words, embedding_dim)

print(embedding_layer.weight)

embedded_vectors = embedding_layer(torch.LongTensor([4]))

print(embedded_vectors)

embedded_vectors = embedding_layer(torch.LongTensor([5]))

print(embedded_vectors)

embedded_vectors = embedding_layer(torch.LongTensor([6]))

print(embedded_vectors)

nn.Embedding层单词转向量实测

1.nn.Embedding创建对象embedding_layer

2.可以看到embedding_layer创建完成,其属性weight已经有值了

3.embedding_layer方法传入分别torch.LongTensor([4]),torch.LongTensor([5]),(torch.LongTensor([6])生成的结果就是根据索引值去weight里取值。

打破猜测:

1.原以为embedding_layer里进行的一个乘法,传参*随机权重,如embedded_vectors =torch.LongTensor([4])*W,实际不是,没有乘法

2.实际是nn.Embedding(num_words, embedding_dim)根据参数已经随机生成了所有的向量,之后仅需根据索引取值

原始猜测:

1.由于程序每次重启embedding_layer.weight生成的参数随机,为供断点续训和预测用,这些参数不能每次都随机生成,所以这些应该是要保存在模型中。即断点续训或预测时,embedding层的向量不应是随机生成了,而是读取模型文件中存储的模型参数。

2.embedding_layer.weight参与梯度更新,一开始以为此处没有

3.一开始根据各种信息判断nn.Embedding的内部机制是,或许有一个随机参数,乘以输入单词索引,得到嵌入向量,并且这个参数不参加更新,潜意识是参数不保存。

复制代码
1.为什么有或许有一个随机参数,乘以输入单词索引,得到嵌入向量这样的理解?
	因为看着是传入了索引,得到了一个随机向量,合理猜测应该是有个随即参数与传参相乘。
	所以这里第一步的猜测就错了。
	首先这个参数的确是有的,机制的实际是随机生成所有的可能的索引的向量,供直接取用。这里参数即嵌入向量

2.这个参数不参加更新?
	这种不参与更新的参数,模型会保存吗?猜测应该不会,如果不会,那每次重启的得到的嵌入向量都变了,怎么供续训和预测用?

对于transformer/bert,网络上的确对nn.Embedding这一步骤的机制讲解不够清晰,不知道嵌入向量是怎么得出的,不知道其中是否有需要训练的参数。

嵌入参数不参加更新这说法主要是来自李宏毅讲的注意力机制那块的误解,说是除了wq,wk,wv参数参与训练,没有别的参数了。这就和续训预测产生了极强的的矛盾,难以判断。

当你创建 nn.Embedding 层时,PyTorch 会随机初始化权重。这些权重在训练过程中会通过反向传播进行更新,以拟合模型的输入和输出数据,确保模型能够更好地进行预测或分类任务。

相关推荐
YuanDaima20486 分钟前
解决Conda环境下RTX 50系列显卡PyTorch+Transformers+PEFT微调报错
人工智能·pytorch·笔记·python·深度学习·机器学习·conda
适应规律26 分钟前
深度学习第四版
人工智能·深度学习
八角Z32 分钟前
从行为惯性到正向认同:留守问题青年在数字社群中的风险机制与干预策略研究
科技·深度学习·创业创新
枫叶林FYL33 分钟前
MCP 实现深度技术报告
人工智能·深度学习
iiiiii1135 分钟前
【LLM学习笔记】Batch Normalization vs Layer Normalization,为什么 NLP 中使用 LN 而非 BN
笔记·深度学习·学习·语言模型·大模型·llm·transformer
Elastic 中国社区官方博客1 小时前
从判断列表到训练好的 Learning to Rank( LTR )模型
大数据·数据库·人工智能·深度学习·elasticsearch·搜索引擎·全文检索
卡梅德生物科技小能手1 小时前
深度解析先天免疫核心受体:TLR2(CD282)的分子机制、信号通路与药物研发技术路径
经验分享·深度学习·生活
HyperAI超神经1 小时前
在线教程丨华中科大与小红书 hi lab开源dots.mocr,SOTA级OCR模型完美还原文档结构,图形也能转 SVG
人工智能·深度学习·学习·机器学习·gpu·orc·vllm
jay神1 小时前
垃圾分类检测数据集
人工智能·深度学习·yolo·目标检测·毕业设计
郝学胜-神的一滴1 小时前
张量维度操控心法:从reshape到升维降维,吃透PyTorch形状操作的底层逻辑
人工智能·pytorch·python·深度学习·程序人生·算法·机器学习