Hi everyone,
I know this topic was previously discussed, however, the proposed solutions didn’t work for me.
I am trying to perform classification of precomputed features into 7 categories using logistic regression.
I got the following error when training the classifier:
ValueError: Expected target size (32, 7), got torch.Size([32])

My target shape was ([768,1]) and squeezing it didn’t solve the problem.
The input shape also is torch.Size([768, 1, 221])
By squeezing it, I got this error:
RuntimeError: Expected object of scalar type Long but got scalar type Int for argument #2 'target'

To train the logistic regression model, I used this piece of code which works steadily with another dataset:
#define classifier
num_input = trainingData.shape[-1]
num_classes = trainingLabels.cpu().unique().numel()
model = Sequential(Linear(num_input, num_classes), LogSoftmax(dim=1))
optimizer = Adam(model.parameters())
criterion = NLLLoss()

batch_size = 32
num_epochs = 50
#learning rate
lr = 1e-4

nsamples = trainingData.shape[0]
nbatches = nsamples // batch_size

for e in range(num_epochs):
    perm = torch.randperm(nsamples)

    
    for i in range(nbatches):
        idx = perm[i * batch_size : (i+1) * batch_size]
        model.zero_grad()
        resp = model.forward(trainingData[idx])
        trainingLabels = trainingLabels.squeeze()
        loss = criterion(resp, trainingLabels[idx])
        loss.backward()
        optimizer.step()
    
    resp = model.forward(trainingData)
    avg_loss = criterion(resp, trainingLabels)

Obviously, my problem is in the data shape but I can not fix it may be because I am new to pytorch.
Any help will be appreciated.