3

我想对我的 Keras 模型执行超参数优化。问题是数据集很大,通常在训练中我使用fit_generator从磁盘批量加载数据,但是像SKlearn Gridsearch,Talos等常见的包只支持fit方法。

我尝试使用以下方法将整个数据加载到内存中:

train_generator = train_datagen.flow_from_directory(
    original_dir,
    target_size=(img_height, img_width),
    batch_size=train_nb,
    class_mode='categorical')
X_train,y_train = train_generator.next()

但是在执行网格搜索时,操作系统会因为内存使用量大而将其杀死。我还尝试将我的数据集欠采样到仅 25%,但它仍然太大。

有人和我有同样的经历吗?您能否分享您对大型数据集执行超参数优化的策略?

根据@dennis-ec 的回答,我尝试在此处遵循 SkOpt 的教程:http ://slashtutorial.com/ai/tensorflow/19_hyper-parameters/这是一个非常全面的教程

4

2 回答 2

2

在我看来,GridSearch 不是超参数优化的好方法,尤其是在你有很多超参数的深度学习中。

我会推荐贝叶斯超参数优化。是一个如何使用 skopt 来实现它的教程。如您所见,您需要编写一个函数来进行训练并返回您的验证分数以进行优化,因此 API 不关心您是否使用来自 keras 的 fit 或 fit_generator。

于 2018-08-21T06:40:59.530 回答
1

看到这个问题:如何在 keras 中使用网格搜索和 fit 生成器

第一个答案似乎回答了你的问题。

于 2018-08-21T06:45:08.623 回答