gpt4 book ai didi

python-3.x - PyTorch:图像尺寸问题

转载 作者:行者123 更新时间:2023-11-30 09:05:59 24 4
gpt4 key购买 nike

我正在研究图像分类器数据集。我的数据集中有 31 个类,每个类都有一个文件夹。为了进行训练,我通过以下方式加载数据:

from torchvision import datasets, transforms
import torch

def load_training(root_path, dir, batch_size, kwargs):
transform = transforms.Compose(
[transforms.Resize([256, 256]),
transforms.RandomCrop(224),
transforms.RandomHorizontalFlip(),
transforms.ToTensor()])
data = datasets.ImageFolder(root=root_path + dir, transform=transform)
train_loader = torch.utils.data.DataLoader(data, batch_size=batch_size, shuffle=False, drop_last=True, **kwargs)
return train_loader

现在,对于批量大小 32,每个批量的尺寸为:[32,3,224,224]。我知道 Pytorch 使用 PIL 来加载图像。但是,当我尝试使用 PIL 从大​​小为 32 的名为 images 的列表加载图像时,使用以下代码片段:

for i in images:
im = Image.open(root_dir + dir + i)
im = im.convert('RGB')
im.load()
im = im.resize((224, 224))
im = np.asarray( im, dtype="int32" )
print(im.shape)
temp_im_2 = torch.from_numpy(np.array(temp_im)).float()

它说im.shape(32,224,224,3)。我究竟做错了什么?我应该怎么做才能使批处理在两种情况下都具有相同的形状:[32,3,224,224]

最佳答案

只交换轴怎么样?如果 im 有四个维度,则类似于 im.transpose(0, 3, 1, 2)。但是,im.shape 应返回 (224, 224, 3),因为您只加载了一张图像,因此 im.transpose(2, 0, 1) 应该为您提供带有第一维 channel 的图像,然后您可以将其堆叠在一起以形成批处理。

关于python-3.x - PyTorch:图像尺寸问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51911447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com