在pytorch中创建自定义数据加载器时更改图像的尺寸

时间:2018-08-09 14:08:47

标签: python machine-learning deep-learning conv-neural-network pytorch

我正在CIFAR10数据集上训练CNN。我提取了50,000张尺寸为(32 x 32 x 3)的图像,并在列表中读取它们。我将它们转换为numpy数组,并将其存储在列表中。我在训练和测试标签上也做了同样的事情。

然后,我在pytorch中构建了两层CNN和一个FC。在执行此操作之前,我创建了自己的自定义数据加载器。这样做时,我要输入的图像的尺寸正在改变。尺寸(32 x 32 x 3)更改为(3 x 32 x 32),我无法训练我的神经网络。

tensor_x = torch.stack([torch.Tensor(i) for i in train_images])
tensor_y = torch.stack([torch.Tensor(i) for i in train_labels])
dataset = data_utils.TensorDataset(tensor_x , tensor_y)
train_dataloader = data_utils.DataLoader(dataset=dataset)

tensor_x = torch.stack([torch.Tensor(i) for i in test_images])
tensor_y = torch.stack([torch.Tensor(i) for i in test_labels])
dataset = data_utils.TensorDataset(tensor_x , tensor_y)
test_dataloader = data_utils.DataLoader(dataset=dataset)

enter image description here

RuntimeError: Given groups=1, weight[64, 3, 3, 3], so expected input[1, 32, 32, 3] to have 3 channels, but got 32 channels instead

1 个答案:

答案 0 :(得分:1)

在PyTorch图像中,通道优先,因此您的图像应为3, 32, 32而不是32, 32, 3

如果image是一个numpy数组,则可以执行以下操作

image = image.transpose((2, 0, 1))