验证集扩充 PyTorch 示例
Validation set augmentations PyTorch example
在 this 用于迁移学习的 PyTorch 视觉示例中,他们正在执行验证集扩充,我不明白为什么。
# Just normalization for validation
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])
]),
}
据我所知,仅在训练集上进行数据扩充(有时在测试集上进行,称为测试时间扩充)。
为什么也在这里做?
另外,为什么不直接调整到 224?
澄清一下,随机数据扩充只允许在训练集上进行。您可以将数据扩充应用于验证集和测试集,前提是 none 的扩充是随机的。您将在您提供的示例中清楚地看到这一点。
训练集使用了许多随机增强(使用随机性的增强通常在名称中带有 "random")。但是,验证集仅使用不会对数据引入任何随机性的扩充。
最后一个重要细节:当您对验证集和测试集使用归一化时,您必须使用与训练集完全相同的因子。你会看到上面的例子保持了相同的数字。
需要调整大小然后中心裁剪是因为验证集需要来自训练集的同一域,因此如果前者随机调整大小并裁剪为 224,则验证集需要确定性地调整大小和裁剪。
在 this 用于迁移学习的 PyTorch 视觉示例中,他们正在执行验证集扩充,我不明白为什么。
# Just normalization for validation
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])
]),
}
据我所知,仅在训练集上进行数据扩充(有时在测试集上进行,称为测试时间扩充)。
为什么也在这里做?
另外,为什么不直接调整到 224?
澄清一下,随机数据扩充只允许在训练集上进行。您可以将数据扩充应用于验证集和测试集,前提是 none 的扩充是随机的。您将在您提供的示例中清楚地看到这一点。
训练集使用了许多随机增强(使用随机性的增强通常在名称中带有 "random")。但是,验证集仅使用不会对数据引入任何随机性的扩充。
最后一个重要细节:当您对验证集和测试集使用归一化时,您必须使用与训练集完全相同的因子。你会看到上面的例子保持了相同的数字。
需要调整大小然后中心裁剪是因为验证集需要来自训练集的同一域,因此如果前者随机调整大小并裁剪为 224,则验证集需要确定性地调整大小和裁剪。