Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pytorch Dataloader加载并正确显示图像数据集_Python_Image Processing_Pytorch - Fatal编程技术网

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))