multi-target not supported at /pytorch/aten/src/THCUNN/generic/classNLLCriterion.cu::15

在计算点云语义分割crossentropy时,遇到了

RuntimeError: multi-target not supported at /pytorch/torch/lib/THCUNN/generic/ClassNLLCriterion.cu

其原因在于Loss函数出入维度不对

loss_func = nn.CrossEntropyLoss()
loss =loss_func(output, labels)

在我的函数中,loss函数的第一个输入为(batch_size, n, C),其中n是点云数量,C是类别数量;第二个输入为(batch_size, n, 1)。
然而在正确用法中labels需要比output少一个维度, 因此正确输入为:
output:(batch_size, n, C)
labels:(batch_size, n)

loss_func = nn.CrossEntropyLoss()
loss =loss_func(output, labels.squeeze().long())

你可能感兴趣的:(深度学习,神经网络,算法,深度学习,计算机视觉,机器学习)