[英]How to run sklearn.model_selection.GridSearchCV without splitting data?
[英]fit: passing multiple inputs with sklearn.model_selection.GridSearchCV
如https://keras.io/models/model 中所述,Keras 的fit
函数x
可以是
训练数据的 Numpy 数组(如果模型有单个输入),或 Numpy 数组列表(如果模型有多个输入)。 如果模型中的输入层已命名,您还可以将字典映射输入名称传递给 Numpy 数组。
但 sklearn.model_selection.GridSearchCV fit
似乎不可能。 真的吗? 有什么解决方法吗?
谢谢!
如果您只想像在 sci-kit learn 中那样使用网格搜索,则可以使用 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/
不幸的是,这种方法有一定的局限性,因为您没有在每个 epoch 之后进行验证。 要解决这个问题,您需要实现自己的 KerasClassifier。
简短的回答是肯定的。
GridSearchCV 检查 X 和 y 的长度是否相同,我认为这是拆分数据以进行交叉验证所必需的。 如果您有多个输入并且 X 的第一个维度表示输入的数量,则此检查将失败。
支持多个输入层存在一个问题: https : //github.com/keras-team/keras/issues/9001 。 另请检查此问题以获取可能的解决方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.