GridSearchCV 与 ImageDataGenerator 结合是否可行且值得推荐?

数据挖掘 喀拉斯 scikit-学习 网格搜索 数据增强 网格搜索
2021-09-21 06:51:46

我想通过结合使用 GridSearchCV(Scikit-Learn)和数据增强(来自 Keras 的 ImageDataGenerator)来优化 CNN 架构的一些超参数。但是,GridSearchCV 仅提供 fit 函数,而不提供 fit_generator 函数。是否甚至建议使用 GridSearchCV 进行数据增强?ImageDataGenerator 的参数已经固定,不应更改。首先通过网格搜索确定超参数而不进行数据增强,仅对最终模型使用数据增强会更好吗?

对于这个话题你有什么看法?你有什么经验?

1个回答

正如所承诺的,在这里您可以找到一个示例,说明如何将 kfold 交叉验证应用于定义的卷积神经网络模型,应用于增强数据集。你可以在这里找到代码作为一个简单的要点 它是按如下方式完成的:

  1. 对于 CIFAR10 图像数据集的子集,为每个原始图像生成 3 个增强图像(通过应用水平翻转),因此我们最终应该将增强数据集中的最终图像数量作为:“原始数据集中的图像数量”* 3。

在此处输入图像描述

  1. 检查构建的增强数据集是否确实具有新的预期图像数量我们刚刚创建了增强数据集,还没有拟合步骤

在此处输入图像描述

  1. 对几个超参数组合的增强数据集应用 kfold 交叉验证在这个例子中,已经尝试了 3 对“学习率-动量”。它是通过通常的“适合”方法制作的: 在此处输入图像描述 在此处输入图像描述

  2. 在数据框中显示结果

在此处输入图像描述

这样,我们通过 kfold 交叉验证应用了超参数化;不是完整的网格搜索,但只有 3 对 hiperparams,但想法是一样的,不依赖于 fit_generator 方法,而是让自己在生成的增强数据集上进行 k 折叠交叉验证。我们还可以在此交叉验证中包含其他数据增强策略。