Я хочу показать точность при каждом выводе изображения, показанном в Классификации изображений с помощью Transfer Learning в PyTorch - PullRequest
0 голосов
/ 14 января 2020

Я перехожу по этой ссылке: https://stackabuse.com/image-classification-with-transfer-learning-and-pytorch/#settingupapretrainedmodel

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

1 Ответ

0 голосов
/ 14 января 2020

Модель, использованная в этом примере, возвращает тензор логитов формы (размер партии, классы). Предполагая, что вы подразумеваете под «значением точности», является прогнозируемой вероятностью класса с наибольшей вероятностью, вам нужно сначала вычислить ваши вероятности, взяв SoftMax для вывода из модели, который дает прогнозируемые вероятности для каждого изображения в вашей партии. Их функция visualize_model будет выглядеть примерно так, хотя я не проверял это.

def visualize_model(model, num_images=6):
    was_training = model.training
    model.eval()
    images_handeled = 0
    fig = plt.figure()

    with torch.no_grad():
        for i, (inputs, labels) in enumerate(dataloaders['val']):
            inputs = inputs.to(device)
            labels = labels.to(device)

            outputs = model(inputs)
            probabilities = nn.functional.softmax(outputs, dim=-1) # compute probabilities
            _, preds = torch.max(outputs, 1)

            for j in range(inputs.size()[0]):
                images_handeled += 1
                ax = plt.subplot(num_images//2, 2, images_handeled)
                ax.axis('off')
                ax.set_title('predicted: {}, probability: {}'.format(class_names[preds[j]], probabilities[preds[j]])) # add predicted class probability
                imshow(inputs.cpu().data[j])

                if images_handeled == num_images:
                    model.train(mode=was_training)
                    return
        model.train(mode=was_training)

Или вы имеете в виду общую точность классификации?

...