适合:使用sklearn.model_selection.GridSearchCV

时间:2018-10-10 14:14:58

标签: python scikit-learn keras grid-search

https://keras.io/models/model中所述,Keras的fit函数x可以

  

大量训练数据(如果模型只有一个输入),或者   Numpy数组的列表(如果模型具有多个输入)。如果输入   在模型中命名图层,还可以通过字典映射   输入名称到Numpy数组。

,但使用sklearn.model_selection.GridSearchCV fit似乎无法实现。真的吗?有什么解决方法吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您只想像sci-kit学习中那样使用网格搜索,则可以使用KerasClassifier包装器。您只需在函数中创建模型即可。

def create_model(dropout_rate):
    #...
model = KerasClassifier(build_fn=create_model)

param_grid = dict(dropout_rate=[0.2,0.3,0.5])
grid = GridSearchCV(estimator=model, param_grid=param_grid, n_jobs=-1)
grid_result = grid.fit(X, Y)

https://machinelearningmastery.com/grid-search-hyperparameters-deep-learning-models-python-keras/

不幸的是,这种方法是有限的,因为在每个时期之后您都没有验证。为了解决这个问题,您需要实现自己的KerasClassifier。

https://github.com/keras-team/keras/issues/4278

答案 1 :(得分:0)

简短的答案是肯定的。

GridSearchCV检查X和y的长度是否相同,我认为这是拆分数据以进行交叉验证所必需的。 如果您有多个输入,并且X的第一个维表示此输入数量,则此检查将失败。

存在支持多个输入层的问题:https://github.com/keras-team/keras/issues/9001。另外,请检查此问题以找到可能的解决方法。