Вы можете заключить класс DatasetFolder
(или ImageFolder) в другой класс, чтобы ограничить набор данных:
class LimitDataset(data.Dataset):
def __init__(self, dataset, n):
self.dataset = dataset
self.n = n
def __len__(self):
return self.n
def __getitem__(self, i):
return self.dataset[i]
Вы также можете определить некоторое отображение между индексом в LimitDataset
и индекс в исходном наборе данных для определения более сложного поведения (например, случайных подмножеств).
Если вы хотите ограничить количество пакетов для каждой эпохи вместо размера набора данных:
from itertools import islice
for data in islice(dataloader, 0, batches_per_epoch):
...
Обратите внимание, что если вы используете этот случайный порядок, размер набора данных будет таким же, но данные, которые увидит каждая эпоха, будут ограничены.Если вы не перетасуете набор данных, это также ограничит размер набора данных.