I currently encountered the error. Sample code to reproduce the error:
prediction = torch.rand((2,3,5,5)) label = torch.randint(0,2,(2,3,5,5)) criterion = nn.CrossEntropyLoss() loss = criterion(prediction, label)
Traceback (most recent call last): File "/home/moshood/Documents/AMMI/AMMI_Research_Project/trail-1.py", line 240, in <module> loss = criterion(prediction, label) File "/home/moshood/.local/lib/python3.8/site-packages/torch/nn/modules/module.py", line 727, in _call_impl result = self.forward(*input, **kwargs) File "/home/moshood/.local/lib/python3.8/site-packages/torch/nn/modules/loss.py", line 961, in forward return F.cross_entropy(input, target, weight=self.weight, File "/home/moshood/.local/lib/python3.8/site-packages/torch/nn/functional.py", line 2468, in cross_entropy return nll_loss(log_softmax(input, 1), target, weight, None, ignore_index, None, reduction) File "/home/moshood/.local/lib/python3.8/site-packages/torch/nn/functional.py", line 2266, in nll_loss ret = torch._C._nn.nll_loss2d(input, target, weight, _Reduction.get_enum(reduction), ignore_index) RuntimeError: only batches of spatial targets supported (3D tensors) but got targets of dimension: 4
I read posts relating to Crossentroy with the label, not one-encoded, but in my case, the label per channel are either one or zero. I will be glad for your assistance.