如https://keras.io/models/model中所述,Keras的fit
函数x
可以
大量训练数据(如果模型只有一个输入),或者 Numpy数组的列表(如果模型具有多个输入)。如果输入 在模型中命名图层,还可以通过字典映射 输入名称到Numpy数组。
,但使用sklearn.model_selection.GridSearchCV fit
似乎无法实现。真的吗?有什么解决方法吗?
谢谢!
答案 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。
答案 1 :(得分:0)
简短的答案是肯定的。
GridSearchCV检查X和y的长度是否相同,我认为这是拆分数据以进行交叉验证所必需的。 如果您有多个输入,并且X的第一个维表示此输入数量,则此检查将失败。
存在支持多个输入层的问题:https://github.com/keras-team/keras/issues/9001。另外,请检查此问题以找到可能的解决方法。