I’m trying to send two images through a siamese network. It looks fine, but I don’t understand very well the loss function CrossEntropyLoss. I’m trying to calculate the similarity between two images, the image could be classified between 5 different classes.
The model returns the results from one image concatenated with the second image
    def forward(self, input1, input2):
        o1 = self.model(input1)
        o2 = self.model(input2)
        final = torch.cat([o1, o2], 1)

        return final

When I train the model I pass two inputs to the network * (lateral, medial) *. The model returns the results of one input concatenated with the result of the second input. This result is a vector that contains the five predictions of one image plus the five predictions of the second image. Since I have to classify the images between five classes the label * (target) * will have values between 0 and 4. I don’t understand how the loss functions works because I’ve predictions that go from 0 to 9 but the labels go from 0 to 4. My question is if this will be a problem with the performance of the model and if it’s how could I fix it.
for lateral, medial, target, file, name in dataloader[phase]:
    lateral, medial, target = lateral.to(device), medial.to(device), target.to(device) 
    optimizer.zero_grad()
    with torch.set_grad_enabled(phase == 'train'):
        output= model(lateral, medial)
        loss = criterion(output, target)
        if phase == "train":
            loss.backward()
            optimizer.step()