Pytorch 预训练模型无法识别我的图像

Pytorch pretrained model not recognizing my image

我有一张 torch.Tensor 格式的图像。我想将它直接输入预训练的分类器,例如 Inception v3。

但是,预测错误(没有错误消息,只是输出错误)。我猜这是因为我没有对其进行规范化(根据:https://pytorch.org/docs/stable/torchvision/models.html),所以这就是我正在尝试做的。

问题是,规范化需要 numpy 输入。但是,为了得到 numpy,我这样做了,它给了我一个错误:

----> 9 image = data.numpy()[0].transpose((1, 2, 0))  # [image_size, image_size, RGB]

RuntimeError: Can't call numpy() on Variable that requires grad. Use var.detach().numpy() instead.

我无法调用分离,因为我需要渐变流过图像(由其他函数生成)。有没有办法绕过将其转换为 numpy.如果没有,如何保持梯度流动?

一种选择是在使用均值和标准差向量作为张量之前将图像缩放到区间 [0, 1]。

import torch

data = (data - data.min()) / (data.max() - data.min())  # rescale to [0, 1]
mean = torch.tensor([[[0.485, 0.456, 0.406]]])
std = torch.tensor([[[0.229, 0.224, 0.225]]])
data = (data - mean) / std  # normalise with tensors