报错信息:
RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0. Got 186 and 200 in dimension 3 at /pytorch/aten/src/TH/generic/THTensorMoreMath.cpp:1307
错误原因:
网络要求输入的featuremap大小一样,实际输入Tensor的大小不一样,我的错误中是第3位tensor有的大小是186,有的大小是200。
解决方法:
-
打印数据形状,把大小不一致的数据挑出剔除
-
对数据进行padding,在放入网络之前用
np.reshape
把形状统一 -
对于自己的图像数据,在
__getitem__
中加上.convert('RGB')
class MyDataset(Dataset):
def __init__(self, image_paths, transforms=transforms):
self.image_paths = image_paths
self.transforms = transforms
def __getitem__(self, index):
image = Image.open(self.image_paths[index])
image = image.convert('RGB')
if self.transforms:
image = self.transforms(image)
return image
参考:https://discuss.pytorch.org/t/runtimeerror-invalid-argument-0/17919/4
- 有博主写的batchsize问题,存疑,感觉不是这个问题,欢迎大家讨论