Python 使用pytorch Dataloader加载并正确显示图像数据集
我试图加载一个自定义数据集来训练神经网络,但在加载它们之前,我想验证它们是否已正确加载。到目前为止,它们似乎没有被正确加载,但我不知道是什么赋予了这些图像所获得的格式 这是我加载图像并显示它们的代码Python 使用pytorch Dataloader加载并正确显示图像数据集,python,image-processing,pytorch,Python,Image Processing,Pytorch,我试图加载一个自定义数据集来训练神经网络,但在加载它们之前,我想验证它们是否已正确加载。到目前为止,它们似乎没有被正确加载,但我不知道是什么赋予了这些图像所获得的格式 这是我加载图像并显示它们的代码 f, axarr = plt.subplots(2,2, figsize=(20,20)) def load_dataset(): data_path = 'processedData/HE/train/' train_dataset = torchvision.datasets.
f, axarr = plt.subplots(2,2, figsize=(20,20))
def load_dataset():
data_path = 'processedData/HE/train/'
train_dataset = torchvision.datasets.ImageFolder(
root=data_path,
transform=torchvision.transforms.ToTensor()
)
train_loader = DataLoader(
train_dataset, batch_size=64
)
return train_loader
x_train = load_dataset()
datathing = next(iter(x_train))
for i, ax in enumerate(axarr.flat):
ax.imshow(datathing[0][i].view(128,128,3))
ax.axis('off')
plt.show()
使用图像运行此操作时,输出
它看起来像什么东西
我一直在尝试使用不同的图像数据集,但所有数据集都返回相同的格式,因此我的问题是:
- 如何加载图像,然后使用pytorch的dataloader以真实格式显示它们
- 视图(128、128、3)把图像弄乱了
正如您在转换文档中所看到的:
[……]
将[0255]范围内的PIL图像或numpy.ndarray(H x W x C)转换为[0.0,1.0]范围内形状(C x H x W)的torch.FLOAT张量
[……]
也就是说,通道维度将从最后一个维度移动到第一个维度。您可以在以下列表中看到:
#。。。
img=torch.from_numpy(图转置((2,0,1)))
# ...
因此,您不能简单地调用.view(…)
;你必须把它调回原处。在PyTorch中,您可以使用.permute(…)
函数进行此操作。大概是这样的:
ax.imshow(datathing[0][i].permute(1,2,0))