【问题标题】:Hyperparameter Optimization for Keras model with large dataset具有大数据集的 Keras 模型的超参数优化
【发布时间】:2019-01-27 03:42:15
【问题描述】:

我想对我的 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/,这是一个非常全面的教程

【问题讨论】:

标签: python optimization keras talos


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    看到这个问题:how use grid search with fit generator in keras

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

    【讨论】:

    • 是的,我也调查了那个答案,我尝试修改它以与flow_from_directory 一起使用,但这对我来说相当复杂
    • 哦,是的,我现在看到你的评论了。我的错。老实说,我不确定如何使用 flow_from_directory 来实现它,因为我没有太多经验,但我可以向您提供一个替代解决方案:进行更积极的欠采样,直到您能够让它运行,使用它来做网格搜索然后在您的生成器上验证这些参数。这至少是一个 B 计划,如果你无法让它在其他方面发挥作用。
    • 是的,我什至尝试了 10% 的采样,但它仍然对内存来说太大了。我的数据集有 9 个类,所以 10% 已经在限制范围内
    • 您的数据集有多大? (在文件大小和样本数量)
    • 我总共有 9000 张图片,每张图片大约 10-20 KB
    猜你喜欢
    • 2017-10-30
    • 2019-11-21
    • 2022-07-15
    • 2021-09-05
    • 2020-10-04
    • 1970-01-01
    • 2018-12-14
    • 2018-11-18
    • 1970-01-01
    相关资源
    最近更新 更多