У меня проблемы с вычислением точности, отзыва, точности и f1-показателя для моей модели - PullRequest
0 голосов
/ 04 мая 2019

У меня неправильно работает матрица путаницы, просто возникают проблемы с получением результатов. Небольшая помощь будет иметь большое значение. Я сейчас получаю ошибку. «Тензорный объект не вызывается».

def get_confused(model_ft):
    nb_classes = 120
    from sklearn.metrics import precision_recall_fscore_support as score
    confusion_matrix = torch.zeros(nb_classes, nb_classes)
    with torch.no_grad():
        for i, (inputs, classes) in enumerate(dataloaders['val']):
            inputs = inputs.to(device)
            classes = classes.to(device)
            outputs = model_ft(inputs)
            _, preds = torch.max(outputs, 1)
            for t, p in zip(classes.view(-1), preds.view(-1)):
                    confusion_matrix[t.long(), p.long()] += 1

            cm = confusion_matrix(classes, preds)
            recall = np.diag(cm) / np.sum(cm, axis = 1)
            precision = np.diag(cm) / np.sum(cm, axis = 0)
    print(confusion_matrix)
    print(confusion_matrix.diag()/confusion_matrix.sum(1))

1 Ответ

1 голос
/ 04 мая 2019

Проблема с этой линией.

cm = confusion_matrix(classes, preds)

confusion_matrix - тензор, и вы не можете вызывать его как функцию. Отсюда Tensor is not callable. Я также не уверен, зачем вам эта линия. Вместо этого, я думаю, вы хотели бы написать cm= confusion_matrix.cpu().data.numpy(), чтобы сделать его массивом, я думаю. Из вашего кода, кажется, cm является np.array.

...