Pytorch 如何从torchvision.datasets.ImageFolder获取n个图像

Pytorch 如何从torchvision.datasets.ImageFolder获取n个图像,pytorch,Pytorch,我目前正在CNN上使用Pytork进行实验,我希望模型能够完成的任务是对图像进行分类 我知道使用torchvision.datasets.ImageFolder可以根据每个子文件夹的名称作为标签,从我的培训文件夹加载所有图像 我计划只从ImageFolder随机获取n个图像,但据我所知,没有任何机制可以将ImageFolder随机加载n个图像,其中n是从1到所有可用图像的任意数字 我该怎么做?感谢您的帮助您可以使用Pyrotch的subset类创建ImageFolder的子集。如果您愿意,我们可

我目前正在CNN上使用Pytork进行实验,我希望模型能够完成的任务是对图像进行分类

我知道使用
torchvision.datasets.ImageFolder
可以根据每个子文件夹的名称作为标签,从我的培训文件夹加载所有图像

我计划只从
ImageFolder
随机获取n个图像,但据我所知,没有任何机制可以将
ImageFolder
随机加载n个图像,其中
n
是从1到所有可用图像的任意数字


我该怎么做?感谢您的帮助

您可以使用Pyrotch的
subset
类创建
ImageFolder
的子集。如果您愿意,我们可以使用numpy或其他方法生成随机索引

dataset = torchvision.datasets.ImageFolder(...)
dataset_subset = torch.utils.data.Subset(dataset, numpy.random.choice(len(dataset), n, replace=False))

您可以将
DataLoader
ImageFolder
数据集一起使用
batch\u size=n
shuffle=True
。使用batch size是否仍然加载所有数据?batch\u size定义数据集的单个样本的大小。因此,您可以对一批尺寸为n的样品进行取样。然后仅加载n个图像。当然,假设您在数据加载程序的第一次迭代后停止。我明白了,所以如果我需要批处理加载的数据,我仍然可以这样做吗?啊,也许我误解了您想要做什么。如果您只想获取大小为n的ImageFolder的子集,则可以使用
子集
数据集,并提供一个在0和ImageFolder数据集长度之间随机选择的n个索引的列表。