Skip to content

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

@sponge-dad

Description

@sponge-dad

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions