我是新来的火把和pyG。我正面临一个错误。
为什么我会得到以下错误:
File "/home/es/anaconda3/envs/pyg-meta/lib/python3.10/site-packages/torch/nn/modules/loss.py", line 1164, in forward
return F.cross_entropy(input, target, weight=self.weight,
File "/home/es/anaconda3/envs/pyg-meta/lib/python3.10/site-packages/torch/nn/functional.py", line 3014, in cross_entropy
return torch._C._nn.cross_entropy_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index, label_smoothing)
IndexError: Target 2 is out of bounds.
这是我的代码和形状
(Pdb) out.shape
torch.Size([64, 2])
(Pdb) Yt_train.shape
torch.Size([64])
这是一个for循环中批大小为64的pytorch dataloader
。
criterion = torch.nn.CrossEntropyLoss()
for data in loader:
_, out = model(data.x, data.edge_index, data.batch)
Yt_train = data.y.type(torch.LongTensor)
loss = criterion(out, Yt_train)
如何解决这一问题?我错过了什么?
发布于 2022-10-16 12:36:42
您的Yt_train
有正确的形状,但是应该包含{0,1}的值-- py手电抱怨的是值2的存在,它超出了张量out
的范围。
https://stackoverflow.com/questions/74086538
复制相似问题