交叉验证中的数据扩充

Data augmentation in cross-validation

我是否正确理解对象分类任务中的数据增强应该只在训练集上进行?

如果是这样,您如何使用增强数据实现 10 折交叉验证?每次测试折叠变化时(即 10 次)是否创建增强数据?

奖金问题:你能告诉我如何在 Tensorflow 中执行此操作的资源吗?

数据增强通常用于帮助我们的模型更好地概括 test/real 世界数据。对于许多实际应用,数据分为 train/valid/test。可以在训练和有效数据集中扩充数据。在测试集中进行数据扩充没有意义。

对于交叉验证,检查 sklearn 库中的 kfold 函数,该函数可以在 numpy 数组上运行。您可以直接在 tensorflow

的 model.fit() 中使用它们的 return 值

是的,你的理解是正确的。 验证数据可让您了解您的模型在未见过的真实示例中的表现, 例如测试数据。所以你应该保持真实而不是通过扩充破坏它。

现在进行 10 折交叉验证:工程方面的考虑开始了。进行扩充在计算上是否昂贵?也许您可以预先计算增强数据,然后选择原始+增强数据进行训练,选择原始数据进行验证。你想要大量的扩充数据 and/or 扩充容易吗?即时执行,可能作为从数据集中获取样本的一部分。

我无法帮助您解决 TF 奖金问题,但 there is a nice example 可以帮助您在 PyTorch 中进行整合。