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 会随机初始化权重。这些权重在训练过程中会通过反向传播进行更新,以拟合模型的输入和输出数据,确保模型能够更好地进行预测或分类任务。

相关推荐
陌上阳光5 小时前
动手学深度学习68 Transformer
人工智能·深度学习·transformer
love_and_hope6 小时前
Pytorch学习--神经网络--完整的模型训练套路
人工智能·pytorch·python·深度学习·神经网络·学习
pzx_0017 小时前
【Pytorch】model.eval()与model.train()
人工智能·pytorch·机器学习
明晚十点睡8 小时前
2024AAAI | DiffRAW: 利用扩散模型从手机RAW图生成单反相机质量的RGB图像
人工智能·pytorch·python·深度学习
代码猪猪傻瓜coding9 小时前
关于几种卷积
深度学习·神经网络·cnn
奔跑的小狗9 小时前
torch.nn.**和torch.nn.functional.**的区别
pytorch·深度学习·机器学习
忆~遂愿10 小时前
丹摩征文活动 | Kolors入门:从安装到全面活用的对比指南
图像处理·人工智能·深度学习·机器学习·计算机视觉·ai作画·数据挖掘
狂放不羁霸12 小时前
组会 | Attention 中有意思的部分
深度学习·自注意力机制
abments13 小时前
python基于深度学习的音乐推荐方法研究系统
开发语言·python·深度学习
AI程序猿人15 小时前
使用混合 BERT 模型的情感分析分类系统
人工智能·深度学习·机器学习·bert·ai大模型·情感分类·智能系统