Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import ntpath
- nb_classes = 9
- import torch.nn.functional as F
- confusion_matrix = torch.zeros(nb_classes, nb_classes)
- _classes = []
- _preds = []
- predicted_labels = []
- class_probs = torch.Tensor()
- im_paths = []
- with torch.no_grad():
- for i, (inputs, classes, im_path) in enumerate(dataloaders['test']):
- im_paths.append(im_path)
- inputs = inputs.to(device)
- tmp_labels = model_ft(inputs)
- classes = classes.to(device)
- classes_list = classes.cpu().detach().numpy().tolist()
- _classes[:]=[i+1 for i in classes_list]
- outputs = model_ft(inputs)
- class_probs = class_probs.cuda()
- class_probs = torch.cat((class_probs, F.softmax(outputs, 1)))
- _, preds = torch.max(outputs, 1)
- preds_list = preds.cpu().detach().numpy().tolist()
- _preds[:]=[i+1 for i in preds_list]
- predicted_labels.append(preds.cpu().detach().numpy().tolist())
- for t, p in zip(classes.view(-1), preds.view(-1)):
- confusion_matrix[t.long(), p.long()] += 1
- print(confusion_matrix)
- per_class_accuracies = (confusion_matrix.diag()/confusion_matrix.sum(1)).cpu().detach().numpy().tolist()
- print(','.join("{:2.04f}".format(x) for x in per_class_accuracies))
- for i in range(nb_classes):
- print("class {:d} --> accuracy: {:.2f}, correct predictions: {:d}, all: {:d}".format(i+1, (confusion_matrix.diag()/confusion_matrix.sum(1))[i]*100, int(confusion_matrix[i][i].numpy()), int(confusion_matrix.sum(dim=1)[i].numpy())))
- flattened_im_paths = flattened = [item for sublist in im_paths for item in sublist]
- for i in range(len(flattened_im_paths)):
- class_p = class_probs[i].cpu().detach().numpy().tolist()
- print('{}, {}'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement