Pytorch, как получить вероятность каждого изображения, принадлежащего классу - PullRequest
0 голосов
/ 08 ноября 2019

Я новичок в Pytorch. Я обучил и протестировал линейный классификатор (nn.Linear) с набором данных изображений, который имеет 8 категорий с batch_size = 35. Во время тестирования я хотел посмотреть, какова вероятность того, что данное изображение принадлежит любому из этих 8 классов. Вот почему я напечатал переменную output.data. Но эти числа выше 1, и они не суммируются в 1. (Я прикрепил код тестирования) Итак, мой вопрос: что означают эти цифры?

Спасибо!

correct = 0
total = 0
with torch.no_grad():
    for data in dataloaders['test']:
        images, labels = data[0].to(device), data[1].to(device)
        outputs = model(images)
        print(outputs.data)

        _, predicted = torch.max(outputs.data, 1)
        print(predicted)
        total += labels.size(0)
        correct += (predicted == labels).sum().item()
print('Accuracy of the network on the 4000 test images: %d %%' % (
100 * correct / total))

1 Ответ

1 голос
/ 08 ноября 2019

Вы получаете логиты как выходные данные вашей нейронной сети.

Используйте torch.nn.Softmax на выходе для сжатия значений в диапазон (0,1).

Кстати. Ваша сеть должна выводить логиты, так как потери Pytorch (torch.nn.CrossEntropyLoss в данном случае) предназначены для работы с ними, в то время как они численно стабильны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...