Модель Pytorch имеет точность выше 92%.Однако, когда я загружаю изображение с помощью PIL и использую модель для оценки, это всегда дает мне неправильный прогноз.Я публикую код Image_loader и код, который я использую для прогнозирования изображения.
loader = transforms.Compose([transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])])
def image_loader(image_name):
"""load image, returns cuda tensor"""
image = Image.open(image_name)
image = loader(image).float()
image = Variable(image, requires_grad=True)
image = image.unsqueeze(0)
return image
image = image_loader('flowers/test/3/image_06634.jpg')
image = image.cuda()
model.to('cuda')
x = model(image)
top5 = torch.topk(x, 5)
classes = torch.topk(x, 5)
probs = torch.topk(x, 5)
probs = probs[0]
probs = torch.exp(probs)
probs = (Variable(probs).data).cpu().numpy()
classes = classes[1]
classes = np.array(classes)
class_to_idx = model.class_to_idx
cat_to_name = dict((class_to_idx.get(k, k), v) for (k, v) in cat_to_name.items())
Классы, которые я получаю из прогноза, вместе с вероятностями никогда не соответствуют правильным во времяэтап испытаний.