nn.embedding层报错index out of range in self的另一种修复方式

背景:

当使用torch.nn.embedding时,报错如下:

IndexError: index out of range in self

明明我放入的数据shape并没有超过 torch.nn.embedding(num_embeddings, embedding_dim) 的范围,但仍然报错了

解决方法

常见的报错原因就是放入 embedding 层的数据shape超过 (num_embeddings, embedding_dim) 的范围了。

而我碰到的另一种情况是放入数组内的值也不能超过num_embeddings,比如下边这个例子就会有上述报错,我有个input tensor , shape 是 [2, 4],embedding 层 设定的是 [10, 3],[2, 4] 并没有超范围,

embedding = nn.Embedding(10, 3)

input = torch.LongTensor([[1, 2, 4, 5], [4, 3, 2, 11]])

embedding(input)

这个原因是 input 里有个元素是 11, 超过 num_embeddings=10了,至于具体怎么解决找个问题,就得看你数据的实际情况了,总之不能让里面的元素的值超过 num_embeddings。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
torch.nn.Embedding函数是PyTorch中用于实现词嵌入的函数。它的参数包括num_embeddings(表示词汇表的大小)、embedding_dim(表示每个词嵌入的维度)等等。\[1\] 关于"index out of range in self"的错误,可能是因为你传入的索引超出了词汇表的范围。在使用nn.Embedding函数时,需要确保传入的索引值在num_embeddings的范围内。\[2\]例如,如果你的词汇表大小为4,那么传入的索引值应该在0到3之间。如果传入的索引超出了这个范围,就会出现"index out of range in self"的错误提示。 另外,需要注意的是,nn.Embedding函数的输入值应该是整数类型的张量。如果你传入的是浮点数类型的张量,也会导致出现"index out of range in self"的错误。\[3\] 因此,要解决这个错误,你需要检查传入nn.Embedding函数的索引值是否在合理的范围内,并且确保传入的是整数类型的张量。 #### 引用[.reference_title] - *1* *3* [关于torch.nn.Embedding需要注意的几点](https://blog.csdn.net/weixin_42670810/article/details/115264280)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [nn.embedding报错index out of range in self详解](https://blog.csdn.net/weixin_42912710/article/details/114479862)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是土豆大叔啊!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值