【问题标题】:How many epochs does scikit learn use when cross validating?scikit 学习交叉验证时使用了多少个 epoch?
【发布时间】:2021-03-03 00:03:36
【问题描述】:

我正在使用 scikit 在时间序列数据中进行模型交叉验证,其中使用 Keras 训练了多层感知器。 (感谢 keras 包装器,我们可以使用 scikit learn 中的 cross_val_score)。

基本使用:

cross_val_score from scikit learn
from sklearn.model_selection import TimeSeriesSplit

问题是我不知道它在每次训练中使用了多少个 epoch。

让我用一个例子来解释。假设 X_train 有 1779 行,我们使用的是 tscv=TimeSeriesSplit(n_splits=15)

我们执行:

cross_val_score(model,X_train,y_train,scoring='neg_mean_squared_error',cv=tscv)

在计算这一行时,它会显示如下内容:

那么每个分割的训练使用了多少个 epoch? 通过训练每个拆分,我的意思是 114/114 将是一个拆分,225/225 将是第二个拆分,等等。 它是否只使用 epoch=1,因为它训练得太快了?这是可配置的吗?

【问题讨论】:

    标签: python tensorflow scikit-learn deep-learning


    【解决方案1】:

    我假设 epoch 的数量由您使用的model的默认值定义。通常,您可以在 keras 模型中配置该步骤,例如:

    model.fit(x, y, batch_size=32, epochs=10)
    

    行内:

    cross_val_score(model,X_train,y_train,scoring='neg_mean_squared_error',cv=tscv)
    

    你不能直接改变它,因为cross_val_score没有这个选项,你可以在文档中看到:

    https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_val_score.html

    为了更好地了解您的模型设置,您可以向我们提供更多代码。

    【讨论】:

    • 你是对的。不过,唯一可以确定的方法是在 KerasRegressor 和 GridSearchCV 中使用 verbose=2,因为这样您实际上会在运行时看到纪元。
    猜你喜欢
    • 2015-08-06
    • 1970-01-01
    • 2020-10-20
    • 2021-01-07
    • 1970-01-01
    • 2019-12-02
    • 2014-07-16
    • 1970-01-01
    • 2020-09-18
    相关资源
    最近更新 更多