Hello everyone, sorry for rookie question I’m starting to learn pytoch
this is my simple 1 layer linear classifier :
class Classifier(nn.Module): def __init__(self, in_dim ): super(Classifier, self).__init__() self.classify = nn.Linear(in_dim , 1 ) def forward(self, features ): final = torch.sigmoid ( self.classify(features) ) return final
I want the output to be probability, so ~1 means class 1 and ~0 means class 0
but I don’t know which loss function to use and how to calculate the accuracy in each epoch when I’m using batching ?
This is my current training loop but the loss is not correct, i feel like i need to change the code because this code is written for multi class classification, not a single output classification :
criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=0.001) scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=50, gamma=0.5) net.train() running_loss = 0 total_iters = len(trainloader) for pos, (train_samples, labels) in zip(bar, trainloader): outputs = net(train_samples) loss = criterion(outputs, labels.float() ) running_loss += loss.item() optimizer.zero_grad() loss.backward() optimizer.step() running_loss = running_loss / total_iters return running_loss