我在 Pytorch v1.3、torchvision v0.4.2 上有一个预先训练的模型,如下所示:
import PIL, torch, torchvision
# Load and normalize the image
img_file = "./robot_image.jpg"
img = PIL.Image.open(img_file)
img = torchvision.transforms.ToTensor()((img))
img = 0.5 + 0.5 * (img - img.mean()) / img.std()
# Load a pre-trained network and compute its prediction
alexnet = torchvision.models.alexnet(pretrained=True)
我想测试这个单一的图像,但出现错误:
alexnet(img)
RuntimeError: Expected 4-dimensional input for 4-dimensional weight 64 3 11 11, but got 3-dimensional input of size [3, 741, 435] instead
让模型评估单个数据点的最简单和最惯用的方法是什么?
AlexNet 期待一个大小为 4 维张量(batch_size x 通道 x 高度 x 宽度(。您正在提供三维张量。
要将张量更改为大小 (1, 3, 741, 435(,只需添加以下行:
img = img.unsqueeze(0)
您还需要对图像进行缩减采样,因为 AlexNet 需要高度和宽度为 224x224 的输入。