У меня есть imageFolder
в PyTorch, который содержит мои категоризированные изображения данных. Каждая папка - это имя категории, а в папке - изображения этой категории.
Я загрузил данные и разделил данные поезда и теста через сэмплер со случайным train_test_split
. Но проблема в том, что у меня плохое распределение данных, и в некоторых классах много изображений, а в некоторых меньше.
Итак, для решения этой проблемы я хочу выбрать 20% каждого класса в качестве тестовых данных и Остальное - данные поезда
ds = ImageFolder(filePath, transform=transform)
batch_size = 64
validation_split = 0.2
indices = list(range(len(ds))) # indices of the dataset
# TODO: fix spliting
train_indices,test_indices = train_test_split(indices,test_size=0.2)
# Creating PT data samplers and loaders:
train_sampler = SubsetRandomSampler(train_indices)
test_sampler = SubsetRandomSampler(test_indices)
train_loader = torch.utils.data.DataLoader(ds, batch_size=batch_size, sampler=train_sampler, num_workers=16)
test_loader = torch.utils.data.DataLoader(ds, batch_size=batch_size, sampler=test_sampler, num_workers=16)
Есть идеи, как это исправить?