Как получить прогнозируемую вероятность? - PullRequest
1 голос
/ 12 февраля 2020

Этот код получает значение 1 или 0 от модели. Если я хочу получить вероятность прогноза Какую строку я должен изменить?

from torch.autograd import Variable
results = []
#names = []
with torch.no_grad():
    model.eval()
    print('===============================================start')
    for num, data in enumerate(test_loader):
        #print(num)
        print("=====================================================")

        imgs, label = data
        imgs,labels = imgs.to(device), label.to(device)
        test = Variable(imgs)
        output = model(test)
        #print(output)
        ps = torch.exp(output)
        print(ps)
        top_p, top_class = ps.topk(1, dim = 1)
        results += top_class.cpu().numpy().tolist()



model = models.resnet50(pretrained=True)
model.fc = nn.Linear(2048, num_classes)
model.cuda()

1 Ответ

1 голос
/ 12 февраля 2020

Модели обычно выводят необработанные журналы прогнозирования. Чтобы преобразовать их в вероятность, вы должны использовать softmax функцию

import torch.nn.functional as nnf

# ...
prob = nnf.softmax(output, dim=1)

top_p, top_class = prob.topk(1, dim = 1)

новая переменная top_p должна дать вам вероятность верхних k классов.

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