I am using models.vgg16(pretrained=True)
model for image classification, where number of classes = 3.
Batch size is 12 trainloader = torch.utils.data.DataLoader(train_data, batch_size=12, shuffle=True)
since error says Target size (torch.Size([12])) must be the same as input size (torch.Size([12, 1000]))
I have changed last fc layer parameters and got last FC layer as Linear(in_features=1000, out_features=3, bias=True)
Loss function is BCEWithLogitsLoss()
criterion = nn.BCEWithLogitsLoss()
optimizer = optim.SGD(vgg16.parameters(), lr=0.001, momentum=0.9)
Training code is
# zero the parameter gradients
optimizer.zero_grad()
outputs = vgg16(inputs) #----> forward pass
loss = criterion(outputs, labels) #----> compute loss
loss.backward() #----> backward pass
optimizer.step() #----> weights update
While computing loss, I get this error Target size (torch.Size([12])) must be the same as input size (torch.Size([12, 1000]))