关于torch.nn.Embedding需要注意的几点

本文详细介绍了PyTorch中的nn.Embedding模块,包括主要参数含义、基本使用方法以及注意事项。例如,num_embeddings参数表示最大词索引,而非词典总数量,padding_idx用于指定特定索引的词向量全为0。通过实例展示了如何通过Embedding将索引转换为词向量,并强调了输入索引值的限制。
部署运行你感兴趣的模型镜像

关于torch.nn.Embedding需要注意的几点

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:词字典的数量(最大索引值)
embedding_dim:词向量的维度
padding_idx:强制指定某索引值的词向量值

关于Embedding的简单理解:

说白了,Embedding的作用就是将你所有的词放入到一个字典里(词去重),该字典的键是词的索引,值是该词,然后Embedding会将这些字典中的"索引"转成指定维度的向量,比如:

word_dict = {0:'我',1:'喜欢',2:'吃',4:'西瓜'}
eb = torch.nn.Emebdding(4,6) #最大词索引为4,词向量长度为6
eb0 =eb(0)  #将0转成词向量
eb1 =eb(1)  #将1转成词向量
...
注意一:Embedding输入的参数是索引值

上述eb0,eb1中输入的值为你字典的key,也就是自定义字典中的词索引。

注意二:num_embedding是最大词索引值,并不是所有词索引的总和。
import torch

eb = torch.nn.Embedding(4,6)
t = torch.tensor(5)
r = eb(t)
print(r)

上述eb就会报错IndexError: index out of range in self
传入的t值必须是小于4的,等于4都不行!

注意三:padding_idx指定索引值转成词向量后,该词向量的元素全为0

padding_idx的作用是将你字典中指定的词索引在进行Emedding时,全部转成的词向量的各元素值全为0
比如:如果指定索引为2的词向量结果

eb = torch.nn.Embedding(4,6,padding_idx=2)
t = torch.tensor(2)
r = eb(t)
print(r)
#结果为:
tensor([0., 0., 0., 0., 0., 0.], grad_fn=<EmbeddingBackward>)

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值