在计算点云语义分割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())