KerasClassifier和GridSearchCV找不到最佳参数?

问题描述

我正在使用Keras Functional API构建神经网络模型,并且正在将gridsearchcv与KerasClassifier结合使用,以找到模型的最佳参数。我正在使用6折交叉验证,并且在搜索过程中获得了最佳参数的整体0.9精度。在运行两次网格搜索后,该函数输出是相同的参数。

用于执行搜索过程的代码是:

model = KerasClassifier(build_fn=get_model_clas,verbose=0)
grid = gridsearchcv(model,param_grid,verbose=2,n_jobs=-1,cv=6,refit=False)
grid.fit(x,y,validation_split=0.1)

但是,在找到最佳参数并使用完整数据集训练了模型之后,与在搜索时获得的得分相比,在测试集上评估模型后获得的得分非常低(〜0.6)。

用于训练最终模型的代码

model = get_model_clas(best_params)
model.fit(x,validation_split=0.1)

实际上,选择随机参数,获得的分数要比gridsearchcv的“最佳参数”给出的分数好。因此,最后,所有搜索过程毫无用处,因为进行6倍训练和对整个数据集进行训练的差异确实很大。如果搜索每次执行都输出相同的参数,怎么会有这么大的差异?如何改善呢?

PS:我正在使用EarlyStopping来防止过度拟合。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)