0

我对数据增强有点困惑。如果我在训练数据集中执行数据扩充,验证数据集应该具有相同的操作吗?例如

data_transforms = {
'train': transforms.Compose([
    transforms.RandomResizedCrop(224),
    transforms.RandomHorizontalFlip(),
    transforms.ToTensor(),
    transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
]),
'val': transforms.Compose([
    transforms.Resize(256),
    transforms.CenterCrop(224),
    transforms.ToTensor(),
    transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
]),}

为什么我们在“val”数据集中进行“resize”和“CenterCrop”操作?

4

2 回答 2

1

由于验证数据用于衡量经过训练的模型有多好,因此不应在不同的训练模型之间进行更改。也就是说,我们应该用一个固定的度量来评价事物。这就是验证数据的扩充不包含任何随机性的原因,而这些随机性存在于训练数据扩充中。

边注:

与测试数据不同,验证数据用于调整超参数。

于 2018-12-19T05:31:12.760 回答
0

我强烈不同意@Yashio Yamauchi 的回答。是的,当数据集较小时,通常在训练数据集中使用数据增强来增加数据集样本的数量。但是,在某些情况下,您的验证数据集也很小,因此您无法实际评估您的模型。

例如,假设您的任务是识别 T 恤上的徽标(例如 Adidas 徽标),无论它们在图像上如何旋转(例如 90 度)。然后,您将不得不使用数据增强来确保您的模型得到旋转的 T 恤。但是,如果您想测量模型在旋转 90 度时识别“阿迪达斯”的能力,那么您的验证数据集中还需要包含旋转 T 恤的图像。

在这种情况下,可以在训练发生之前在验证数据集中使用一次数据增强!

于 2021-06-08T09:48:32.457 回答