torch.embedding 报错 IndexError: index out of range in self

打印 上一主题 下一主题

主题 1500|帖子 1500|积分 4500


1. 报错

torch.embedding 报错:
  1. IndexError: index out of range in self
复制代码
2. 原因

首先看下正常情况:
  1. import torch
  2. import torch.nn.functional as F
  3. inputs = torch.tensor([[1, 2, 4, 5], [4, 3, 2, 9]])
  4. embedding_matrix = torch.rand(10, 3)
  5. print(embedding_matrix)
  6. print(F.embedding(inputs, embedding_matrix))
复制代码
输出:
  1. tensor([[0.8832, 0.2487, 0.7640],
  2.         [0.8973, 0.5747, 0.8496],
  3.         [0.2269, 0.2961, 0.7951],
  4.         [0.7736, 0.9914, 0.9448],
  5.         [0.4134, 0.7143, 0.4455],
  6.         [0.3482, 0.1837, 0.3179],
  7.         [0.4071, 0.9485, 0.1735],
  8.         [0.7494, 0.8119, 0.7899],
  9.         [0.3922, 0.2944, 0.4924],
  10.         [0.2391, 0.8299, 0.3299]])
  11. tensor([[[0.8973, 0.5747, 0.8496],
  12.          [0.2269, 0.2961, 0.7951],
  13.          [0.4134, 0.7143, 0.4455],
  14.          [0.3482, 0.1837, 0.3179]],
  15.         [[0.4134, 0.7143, 0.4455],
  16.          [0.7736, 0.9914, 0.9448],
  17.          [0.2269, 0.2961, 0.7951],
  18.          [0.2391, 0.8299, 0.3299]]])
复制代码
在这里,embedding_matrix 是一个全量的权重表,须要根据 inputs 的列表来选择权重列表的第几行。
例如:inputs[0] = [1, 2, 4, 5],留意这里是从0开始的,那么依次选择 embedding_matrix 的第2行、第3行、第5行、第6行,则对应的列表组成为:
  1. [[0.8973, 0.5747, 0.8496],
  2. [0.2269, 0.2961, 0.7951],
  3. [0.4134, 0.7143, 0.4455],
  4. [0.3482, 0.1837, 0.3179]]
复制代码
这就是输出的第一部门,对于inputs[1] = [4, 3, 2, 9] 同样如此。
到这里,应该就清楚了出现 IndexError: index out of range in self
报错的原因了。如果 inputs 中出现超过权重表长度的数,就会报错。
例如上面例子权重表有10行,以是 inputs 最大数应该为9,如果 inputs[1] = [4, 3, 2, 10],如下:
  1. import torch
  2. import torch.nn.functional as F
  3. inputs = torch.tensor([[1, 2, 4, 5], [4, 3, 2, 10]])
  4. embedding_matrix = torch.rand(10, 3)
  5. print(embedding_matrix)
  6. print(F.embedding(inputs, embedding_matrix))
复制代码
那么报错如下:

3. 解决方法

知道报错原因之后,那么须要弄清楚的就是 inputs 中为什么会出现超过 embedding_matrix 权重表长度的数,这里就须要具体分析了。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

八卦阵

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表