MedicalZooPytorch icon indicating copy to clipboard operation
MedicalZooPytorch copied to clipboard

AssertionError: 'input' and 'target' must have the same shape

Open sponge-dad opened this issue 8 months ago • 0 comments

In lib/losses3D/BaseClass.py, I encountered an error on line 56:

assert input.size() == target.size(), "'input' and 'target' must have the same shape"

Image

Upon inspection, I found that the shapes of input and target are different:

  • input.shape: torch.Size([4, 4, 128, 128, 48])
  • target.shape: torch.Size([4, 1, 128, 128, 48])

The mismatch occurs in dimension 1 (the channels dimension).

After debugging, I traced the source of input and target to the prepare_input function in lib/utils/general.py. At this stage:

Image

  • The function parameters are modalities == 3 and channels == 3
  • At this point, target.shape is already torch.Size([4, 1, 128, 128, 48])
  • However, after passing through the convolutional layers, input_tensor transforms from torch.Size([4, 3, 128, 128, 48]) to torch.Size([4, 4, 128, 128, 48]), leading to the shape mismatch.

sponge-dad avatar Mar 12 '25 04:03 sponge-dad