我在Colab中尝试使用pytorch的torch.datasets.ImageFolder加载训练数据。
transform = transforms.Compose([transforms.Resize(400), transforms.ToTensor()])dataset_path = 'ss/'dataset = datasets.ImageFolder(root=dataset_path, transform=transform)dataloader = torch.utils.data.DataLoader(dataset, batch_size=20)
我遇到了以下错误:
---------------------------------------------------------------------------FileNotFoundError Traceback (most recent call last)<ipython-input-27-7abcc1f434b1> in <module>() 2 transforms.ToTensor()]) 3 dataset_path = 'ss/'----> 4 dataset = datasets.ImageFolder(root=dataset_path, transform=transform) 5 dataloader = torch.utils.data.DataLoader(dataset, batch_size=20)3 frames/usr/local/lib/python3.7/dist-packages/torchvision/datasets/folder.py in make_dataset(directory, class_to_idx, extensions, is_valid_file) 100 if extensions is not None: 101 msg += f"Supported extensions are: {', '.join(extensions)}"--> 102 raise FileNotFoundError(msg) 103 104 return instancesFileNotFoundError: Found no valid file for the classes .ipynb_checkpoints. Supported extensions are: .jpg, .jpeg, .png, .ppm, .bmp, .pgm, .tif, .tiff, .webp
我的数据集文件夹中包含一个子文件夹,里面有很多png格式的训练图像,但ImageFolder仍然无法访问它们。
回答:
我在使用类似IPython笔记本的工具时也遇到了相同的问题。
首先,请检查你的dataset_path
下是否有任何隐藏文件。如果你在Linux环境下,可以使用ls -a
命令查看。
我遇到的情况是发现了一个名为.ipynb_checkpoints
的隐藏文件,它与图像类子文件夹并列。我认为这个文件让PyTorch数据集产生了混淆。我确认它没有用处,所以我直接删除了它。然后数据集就能正常工作了。
或者,如果你想简单地忽略那个文件,你也可以尝试这个方法。