IndexError:用作索引的张量必须是 long、byte 或 bool 张量

fee*_*_pi 4 python image list deep-learning pytorch

我仅在测试阶段遇到此错误,但在训练和验证阶段没有遇到任何问题。

IndexError: tensors used as indices must be long, byte or bool tensors
Run Code Online (Sandbox Code Playgroud)

我在给定代码片段的最后一行收到此错误。

代码片段如下所示,

IndexError: tensors used as indices must be long, byte or bool tensors
Run Code Online (Sandbox Code Playgroud)

“lab”是一个张量值,并以这种方式打印出范围,

tensor([6, 7, 8])
tensor([ 9, 10, 11])
tensor([21, 22, 23])
Run Code Online (Sandbox Code Playgroud)

(注*:根据 ElementsPerClass 的值,该实验张量的长度可以是长度“n”)

Saw*_*aha 6

之前的答案在某种程度上对我来说在最新版本的 pytorch 中不起作用。但我已经通过将索引传递为 long -> 来解决它i.long()lab.long()

所以,这应该有效,

NumClass = 10
mask = torch.zeros(batch_size, self.mem_dim, 4, 4)
ones = torch.ones(1, 4, 4)
NumRows = self.mem_dim
Elements = NumRows//NumClass
for i in range(batch_size):
    lab = torch.arange(Elements * label[i], Elements*(label[i]+1), 1)
    mask[i.long(),lab.long()] = ones
Run Code Online (Sandbox Code Playgroud)

有一个问题,因为我不知道确切的错误消息,所以我无法确定一个或两个索引是否需要转换为 long。