RuntimeError: expected scalar type Long but found Int
时间: 2023-09-28 17:13:02 浏览: 217
Python RuntimeError: thread.__init__() not called解决方法
这个错误通常是由于使用int类型而不是long类型所导致的。在PyTorch中,int类型默认为32位,而long类型为64位。某些操作,如index_select和gather等,需要使用long类型的索引。因此,如果您使用了这些操作并且传递了int类型的索引,则会出现这个错误。
解决这个错误的方法是将int类型的索引转换为long类型。您可以使用`tensor.long()`方法将一个int类型的tensor转换为long类型的tensor,例如:
```python
import torch
tensor_int = torch.randint(low=0, high=10, size=(3, 3), dtype=torch.int)
# tensor_int tensor([[0, 1, 0], [7, 7, 6], [4, 2, 7]], dtype=torch.int32)
tensor_long = tensor_int.long()
# tensor_long tensor([[0, 1, 0], [7, 7, 6], [4, 2, 7]], dtype=torch.int64)
```
在这个例子中,我们首先创建了一个int类型的tensor,然后使用`long()`方法将它转换为long类型的tensor。
阅读全文