0

错误信息

Traceback(最近一次调用最后):文件“pred.py”,第 134 行,在输出 = 模型(数据)运行时错误:预期 4 维输入为 4 维权重 [16、3、3、3],但得到大小为 [1, 32, 32] 的 3 维输入。

预测码

normalize = transforms.Normalize(mean=[0.4914, 0.4824, 0.4467],
                                     std=[0.2471, 0.2435, 0.2616])
train_set = transforms.Compose([
                                 transforms.RandomCrop(32, padding=4),
                                 transforms.RandomHorizontalFlip(),
                                 transforms.ToTensor(),
                                 normalize,
                                     ])

model = models.condensenet(args)
model = nn.DataParallel(model)
PATH = "results/savedir/save_models/checkpoint_001.pth.tar"

model.load_state_dict(torch.load(PATH)['state_dict'])


device = torch.device("cpu")

model.eval()

image = Image.open("horse.jpg")
input = train_set(image)
train_loader = torch.utils.data.DataLoader(
        input,
        batch_size=1,shuffle=True, num_workers=1)
for i, data in enumerate(train_loader):
    
    #input_var = torch.autograd.Variable(data, volatile=True)
    #input_var = input_var.view(1, 3, 32,32)
    
    **output = model(data)
topk=(1,5)
maxk = max(topk)

_, pred = output.topk(maxk, 1, True, True)
    

尝试预测单个图像时出现此错误图像 形状/大小错误消息

链接到保存的模型

训练代码库

4

2 回答 2

0

请取消注释此行#input_var = input_var.view(1, 3, 32,32),以便您的输入尺寸为 4。
我假设您的编号为 4。输入通道数为 3,如果是 1,则使用input_var = input_var.view(1, 1, 32,32)灰度

于 2021-02-24T16:13:35.297 回答
0

无需执行 for 循环和 train_loader,只需将输入直接传递到模型即可解决此问题。像这样

input = train_set(image)
input = input.unsqueeze(0)
model.eval()
output = model(input)

更多细节可以在这里找到链接

于 2021-03-11T00:10:48.363 回答