I’m running into: Predictions and targets are expected to have the same shape, but got torch.Size([1013, 100]) and torch.Size([1013]). I am using class indices as the predictions of which there are 100 and the batch size is 1013. What am I missing? I’ve gotten this to work on other code and the example in PyTorch is very similar with targets as [5,3] and preds as [3].
Hi John!
The probable cause of your error is that your target is a Float tensor
when it should be a Long tensor.
CrossEntropyLoss supports both integer-class-index and floating-point
probabilistic (“soft”) targets. The former is required to have shape
[nBatch] (no nClass dimension) and have values that run from 0 to
nClass - 1, while the latter is required to have shape [nBatch, nClass]
with values that run from 0.0 to 1.0.
If your target is a Float tensor, CrossEntropyLoss assumes that you
are using a probabilistic target and requires it to have the same shape
as your predictions (the input to CrossEntropyLoss), namely
[nBatch, nClass].
Best.
K. Frank
Hi K. Frank,
Thanks for the reponse. I thought that same thing too, but after checking it in the debugger my prediction is HalfTensor and my target is LongTensor. I’m super confused. I went back and reran some old code that was fully functional solving a similar problem and the shapes agreed with what I’m doing now.
John
I ran through the debugger and it looks like it’s actually happening in my TorchMetrics accuracy function. I’ll dig in deep and get back to everyone.