解决报错:invalid argument 0: Sizes of tensors must match except in dimension 0.

报错如下:
Traceback (most recent call last):
File “6_database_deal_.py”, line 73, in
for i, data in enumerate(test_loader):
File “/home/muli/anaconda3/lib/python3.5/site-packages/torch/utils/data/dataloader.py”, line 560, in next
batch = self.collate_fn([self.dataset[i] for i in indices])
File “/home/muli/anaconda3/lib/python3.5/site-packages/torch/utils/data/_utils/collate.py”, line 68, in default_collate
return [default_collate(samples) for samples in transposed]
File “/home/muli/anaconda3/lib/python3.5/site-packages/torch/utils/data/_utils/collate.py”, line 68, in
return [default_collate(samples) for samples in transposed]
File “/home/muli/anaconda3/lib/python3.5/site-packages/torch/utils/data/_utils/collate.py”, line 43, in default_collate
return torch.stack(batch, 0, out=out)
RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0. Got 309 and 580 in dimension 2 at /pytorch/aten/src/TH/generic/THTensor.cpp:711

数据集图像大小不一,加载训练集时进行了RandomResizedCrop ,
但是在测试时忘记了,因此出现了以下报错信息:

RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0. Got 309 and 580 in dimension 2 at /pytorch/aten/src/TH/generic/THTensor.cpp:711

解决办法:
testTransform部分加入 transforms.Resize((224, 224))

# 训练
trainTransform = transforms.Compose([
    transforms.RandomResizedCrop(224), # 随机裁剪,
    transforms.RandomHorizontalFlip(), # 随机水平翻转
    transforms.ToTensor(),
    normTransform # 正则化
])

# 测试
testTransform = transforms.Compose([
    transforms.Resize((224, 224)), # 调整图像大小
    transforms.ToTensor(),
    normTransform # 正则化
])

你可能感兴趣的:(python)