PyTorch ImageFolder:如何对属于特定类别的图像进行采样

时间:2018-08-12 02:48:56

标签: pytorch tensor

我有一个pytorch ImageFolder。我看到ImageFolder的__getitem__(index)方法可以同时获取张量和索引的类。但是,如果我想使用ImageFolder从我选择的一个或多个类中随机采样一定数量的图像,然后在以后为__getitem__方法获取它们的索引怎么办? (排序类似于反向操作,即选择类->获取索引,而不是选择索引->获取类)

这将如何完成?

1 个答案:

答案 0 :(得分:0)

我曾经为MNIST数据集尝试过类似的方法,但可悲的是找不到相应的代码。如果我没记错的话,我只是简单地遍历了数据集的自定义拆分,但是现在有一种更本地化的方法:
从本质上讲,不必担心Dataset类,这更多的是您的DataLoader的问题。 Dataset仅包含引用此数据的方法。不过,实际调用此数据的时间点发生在DataLoader中。

不幸的是,您将不得不编写自己的DataLoader,从而可以使用其他自定义samplers that only take a specific range。我最好的猜测是拥有一个使用多个Samplers的采样器(每个类一个),在其中传递每个类的相应索引,并在运行时要求与特定类对应的采样器。

AFAIK,定期提供的DataLoader不可能有这样的东西。 还请注意,要一次在所有训练数据上一次通过(如果您仍然想在一个时期内对所有不同样本进行训练),就变得越来越难以追踪。