【问题标题】:Get each epoch's validation scores from GridSearchCV models从 GridSearchCV 模型中获取每个 epoch 的验证分数
【发布时间】:2022-01-12 12:43:09
【问题描述】:

我将 GridSearchCV 与 keras 一起使用,我想绘制和分析训练与验证历史。但是,我已经检查了文档并确实搜索了 SO,但是当使用 GridSearchCV 拟合模型时,我找不到获取验证历史记录(即每个时期的分数)的方法。我能够在回调中获取培训历史记录,但不是验证记录。问题是一些模型过拟合很多,我希望能够看到调整参数如何影响过拟合。

我正在像这样使用 GridSearchCV:

class MyCallback(keras_callbacks.Callback):
   def on_train_end(self, logs=None):
      # here I can get the model history from self.model.history.history

def create_model(...):
   ...
   model = Model(...)
   model.compile(optimizer=optimizer, loss="binary_crossentropy", metrics=['acc'])
   return model

callbacks = [MyCallback()]
model = KerasClassifier(build_fn=create_model, verbose=3)
grid = GridSearchCV(estimator=model, param_grid=param_grid, n_jobs=4, cv=3, verbose=10, return_train_score=True)
grid_result = grid.fit(X_train["padded"], y_train["binary"], epochs=30, batch_size=16, callbacks=callbacks)

【问题讨论】:

    标签: python tensorflow keras scikit-learn


    【解决方案1】:

    您希望在适合您的 Keras 模型时跟踪验证性能,例如使用 validation_datavalidation_split(请参阅 here 以获取参考)。

    但是GridSearchCV(来自 sklearn)并不那么聪明,无法理解验证集(在 CV 拆分期间创建)必须与 KerasClassifier 一起使用 validation_data 才能跟踪每个时期的得分/损失。

    换句话说,您无法使用GridSearchCV跟踪每个验证集(在 CV 拆分期间创建)的性能

    This is a possible solution.

    【讨论】:

      猜你喜欢
      • 2011-05-02
      • 1970-01-01
      • 2019-03-17
      • 2020-11-01
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多