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

Bug

  • 背景:
  • 解决方法

背景:

当使用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。

你可能感兴趣的:(修BUG,python,深度学习,pytorch,nlp)