我有一个pytorch ImageFolder。我看到ImageFolder的__getitem__(index)
方法可以同时获取张量和索引的类。但是,如果我想使用ImageFolder从我选择的一个或多个类中随机采样一定数量的图像,然后在以后为__getitem__
方法获取它们的索引怎么办? (排序类似于反向操作,即选择类->获取索引,而不是选择索引->获取类)
这将如何完成?
答案 0 :(得分:0)
我曾经为MNIST数据集尝试过类似的方法,但可悲的是找不到相应的代码。如果我没记错的话,我只是简单地遍历了数据集的自定义拆分,但是现在有一种更本地化的方法:
从本质上讲,不必担心Dataset
类,这更多的是您的DataLoader
的问题。 Dataset
仅包含引用此数据的方法。不过,实际调用此数据的时间点发生在DataLoader
中。
不幸的是,您将不得不编写自己的DataLoader
,从而可以使用其他自定义samplers that only take a specific range。我最好的猜测是拥有一个使用多个Samplers的采样器(每个类一个),在其中传递每个类的相应索引,并在运行时要求与特定类对应的采样器。
AFAIK,定期提供的DataLoader
不可能有这样的东西。
还请注意,要一次在所有训练数据上一次通过(如果您仍然想在一个时期内对所有不同样本进行训练),就变得越来越难以追踪。