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

时间:2019-07-29 20:59:25

标签: python pytorch torch torchvision

我有一个炬管张量格式的图像。我想将其直接输入到经过训练的分类器中,例如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.

我无法调用detach,因为我需要渐变流过图像(由其他函数生成)。有没有一种方法可以绕过将其转换为numpy。如果没有,如何保持梯度流?

1 个答案:

答案 0 :(得分:2)

一种选择是在使用均值和标准差矢量作为张量之前,将图像缩放到[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