pytorch:“不支持多目标”错误消息

The*_*fer 15 python machine-learning pytorch tensor

所以我想对一些(3, 50, 50)图片进行分类。首先,我从没有数据加载器或批处理的文件中加载了数据集,它起作用了。现在,在添加了这两件事之后,我得到了那个错误:

RuntimeError: multi-target not supported at /pytorch/aten/src/THCUNN/generic/ClassNLLCriterion.cu:15
Run Code Online (Sandbox Code Playgroud)

我在互联网上找到了很多答案,主要是使用,target.squeeze(1)但对我不起作用。我的目标批次如下所示:

tensor([[1, 0],
        [1, 0],
        [1, 0],
        [1, 0],
        [1, 0],
        [1, 0],
        [1, 0],
        [1, 0]], device='cuda:0')
Run Code Online (Sandbox Code Playgroud)

应该没问题吧?

这里是完整的代码(请注意,我只创建了模型的结构,之后我将在其上应用完整且正确的数据集,因为我还没有完整的数据,只有 32 张图片且没有标签,这就是为什么我添加torch.tensor([1, 0])为所有标签的占位符):

RuntimeError: multi-target not supported at /pytorch/aten/src/THCUNN/generic/ClassNLLCriterion.cu:15
Run Code Online (Sandbox Code Playgroud)

所以我希望它开始训练(当然不会因为标签错误而学习任何东西),提前致谢!

McL*_*nce 24

因为nn.CrossEntropyLoss目标必须是区间 [0, #classes] 中的单个数字,而不是单热编码的目标向量。您的目标是 [1, 0],因此 PyTorch 认为您希望每个输入有多个标签,但不受支持。

替换您的单热编码目标:

[1, 0] --> 0

[0, 1] --> 1