我想在Keras模型上执行超参数优化。问题在于数据集很大,通常在训练中我使用fit_generator
从磁盘上批量加载数据,但是像SKlearn Gridsearch,Talos等常用软件包仅支持fit
方法。 / p>
我尝试使用以下方法将整个数据加载到内存中:
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/,它是非常全面的教程
答案 0 :(得分:1)
在我看来,GridSearch并不是用于优化超参数的好方法,尤其是在深度学习中,因为您有许多超参数。
我建议贝叶斯超参数优化。 Here是有关如何使用skopt实施此操作的教程。如您所见,您需要编写一个函数来进行训练并返回验证分数以进行优化,因此API不在乎是否使用来自keras的fit或fit_generator。
答案 1 :(得分:1)
看到这个问题:how use grid search with fit generator in keras
第一个答案似乎可以回答您的问题。