我正在keras
中训练香草神经网络。为了选择最佳的超参数,我想使用scikit-learn
API(文档here)。但是,由于我有兴趣预测每个标签的概率,因此我使用以下非常规方法来训练模型:
[1, 3, 0]
的样本替换为四个样本[1, 0, 0]
,[0, 1, 0]
,[0, 1, 0]
,[0, 1, 0]
。categorical cross-entropy
。 我想在scikit-learn的[0.25, 0.75, 0]
中实现超参数调整。
这是Keras正常工作的部分:
GridSearchCV
还有需要适当修改的sklearn部分:
keras_model = get_model()
# get_model() returns a compiled Keras model
train = repeat_samples(train_data)
test = to_prob_vec(test_data)
keras_model.fit(train[x_cols], train[y_cols])
keras_model.evaluate(test[x_cols], test[y_cols])
我怀疑对sk_model = KerasRegressor(build_fn=get_model())
param_grid = dict(epochs=[10, 20, 30])
grid = GridSearchCV(estimator=sk_model, param_grid=param_grid)
grid_result = grid.fit(<what here>)
# Following is incorrect because during cross-validation
# it has dummy-coded variables instead of probability vectors:
# grid_result = grid.fit(train[x_cols], train[y_cols])
(documentation)中的cv
参数进行适当的修改将帮助我实现这一目标。我不知道怎么办。