Как увеличить данные после разделения набора данных traininng на набор Train и валидации для CIFAR10 с помощью PyTorch? - PullRequest
2 голосов
/ 04 ноября 2019

При классификации CIFAR10 в PyTorch обычно имеется 50 000 обучающих образцов и 10 000 тестовых образцов. Однако, если мне нужно создать проверочный набор, я могу сделать это, разделив обучающий набор на 40000 выборок поездов и 10000 выборок проверки. Я использовал следующие коды

train_transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))])
test_transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))])

cifar_train_L = CIFAR10('./data',download=True, train= True, transform = train_transform)
cifar_test = CIFAR10('./data',download=True, train = False, transform= test_transform) 

train_size = int(0.8*len(cifar_training))
val_size = len(cifar_training) - train_size
cifar_train, cifar_val = torch.utils.data.random_split(cifar_train_L,[train_size,val_size])

train_dataloader = torch.utils.data.DataLoader(cifar_train, batch_size= BATCH_SIZE, shuffle= True, num_workers=2)
test_dataloader = torch.utils.data.DataLoader(cifar_test,batch_size= BATCH_SIZE, shuffle= True, num_workers= 2)
val_dataloader = torch.utils.data.DataLoader(cifar_val,batch_size= BATCH_SIZE, shuffle= True, num_workers= 2)

Обычно при расширении данных в PyTorch используются разные процессы увеличения в функции transforms.Compose (то есть transforms.RandomHorizontFlip ()). Однако, если я использую эти процессы дополнения до разделения обучающего набора и набора проверки, расширенные данные также будут включены в набор проверки. Есть ли способ, как я могу решить эту проблему?

Короче говоря, я хочу вручную разделить обучающий набор данных на обучающий и проверочный набор, а также использовать технику дополнения данных в новыйтренировочный набор.

1 Ответ

1 голос
/ 04 ноября 2019

Вы можете вручную переопределить transforms набора данных:

cifar_train, cifar_val = torch.utils.data.random_split(cifar_train_L,[train_size,val_size])
cifar_val.transforms = test_transform 
...