torch.nn.Embedding学习

本文详细解释了PyTorch库中torch.nn.Embedding模块的参数含义,包括词典大小、嵌入维度等,以及其在神经网络训练中的算法逻辑,强调了与Linear的区别,特别是在模型第一层的使用情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用方法:

torch.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None,
 max_norm=None,  norm_type=2.0,   scale_grad_by_freq=False, 
 sparse=False,  _weight=None)


 

参数含义:

num_embeddings (python:int) – 词典的大小尺寸,比如总共出现5000个词,那就输入5000。此时index为(0-4999)
embedding_dim (python:int) – 嵌入向量的维度,即用多少维来表示一个符号。
padding_idx (python:int, optional) – 填充id,比如,输入长度为100,但是每次的句子长度并不一样,后面就需要用统一的数字填充,而这里就是指定这个数字,这样,网络在遇到填充id时,就不会计算其与其它符号的相关性。(初始化为0)
max_norm (python:float, optional) – 最大范数,如果嵌入向量的范数超过了这个界限,就要进行再归一化。
norm_type (python:float, optional) – 指定利用什么范数计算,并用于对比max_norm,默认为2范数。
scale_grad_by_freq (boolean, optional) – 根据单词在mini-batch中出现的频率,对梯度进行放缩。默认为False.
sparse (bool, optional) – 若为True,则与权重矩阵相关的梯度转变为稀疏张量。

算法逻辑:

1.随机初始化词向量层,构建二维表,存储语料中每个词的词向量;

2.每个batch训练,计算每个句子的长度,记录长度,将单词转化为i词典中的序号,句子结尾加EOS,对长度不足的句子,进行填充;从词向量表中查找batch中单词的词向量,送入网络;

3.产出计算结果,送入网络的维度是[seq_len, batch_size],产出结果维度是[seq_len, batch_size,embedding_size],最后一个维度为词向量。

Embedding和Linear比较相似,Embedding输入时词的序号,Linear的输入是向量,一般在模型第一层放Embedding,模型后面不再使用Embedding,使用Linear。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值