【问题标题】:How do I augment data after spliting traininng datset into train and validation set for CIFAR10 using PyTorch?使用 PyTorch 将训练数据集拆分为 CIFAR10 的训练集和验证集后,如何扩充数据?
【发布时间】:2020-02-29 09:24:11
【问题描述】:

在 PyTorch 中对 CIFAR10 进行分类时,通常有 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.RandomHorizo​​ntalFlip())。但是,如果我在拆分训练集和验证集之前使用这些增强过程,则增强数据也将包含在验证集中。有什么办法可以解决这个问题吗?

简而言之,我想手动拆分 将数据集训练成训练和验证集以及我想要的 在新的训练集中使用数据增强技术。

【问题讨论】:

    标签: deep-learning conv-neural-network pytorch torch data-augmentation


    【解决方案1】:

    您可以手动覆盖数据集的transforms

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

    【讨论】:

      猜你喜欢
      • 2019-05-01
      • 2016-09-13
      • 2020-10-01
      • 2019-04-22
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2016-07-04
      相关资源
      最近更新 更多