Classifier average accuracy calculation:
correct = (1).squeeze().cuda() total = (1).squeeze().cuda() for i, (images, labels) in enumerate(train_loader): images = Variable(()) labels = Variable(()) output = model(images) prediction = (output, 1) correct += (prediction == labels).sum().float() total += len(labels) acc_str = 'Accuracy: %f'%((correct/total).cpu().detach().())
Accuracy calculation for each subclass of the classifier:
correct = list(0. for i in range(args.class_num)) total = list(0. for i in range(args.class_num)) for i, (images, labels) in enumerate(train_loader): images = Variable(()) labels = Variable(()) output = model(images) prediction = (output, 1) res = prediction == labels for label_idx in range(len(labels)): label_single = label[label_idx] correct[label_single] += res[label_idx].item() total[label_single] += 1 acc_str = 'Accuracy: %f'%(sum(correct)/sum(total)) for acc_idx in range(len(train_class_correct)): try: acc = correct[acc_idx]/total[acc_idx] except: acc = 0 finally: acc_str += '\tclassID:%d\tacc:%f\t'%(acc_idx+1, acc)
This Pytorch implementation of calculating classifier accuracy (total classification and subclassification) is all that I have shared above.