在 K-Fold Cross 验证中的 keras 中在哪里创建模型对象?

Posted

技术标签:

【中文标题】在 K-Fold Cross 验证中的 keras 中在哪里创建模型对象?【英文标题】:Where to create model object in keras in K-Fold Cross validation? 【发布时间】:2021-01-30 05:35:35 【问题描述】:

在 K-fold 循环内部还是外部创建 Keras 模型对象? 请解释为什么你的答案是正确的。

def model_def(): 
     model = Sequential()
     model.add(.... so on....)
     model.compile(....so on ....)
     return model

案例 1:- 在 K-fold 循环内,因此它正在为每个循环重新创建

for train_index, test_index in kf.split(X,Y):
     model = model_def()
     model.fit(X[train_index],Y[test_index] ..... so on .....

或者, 案例 2:- 在循环之外,因此所有折叠循环的单个模型对象

model = model_def()
for train_index, test_index in kf.split(X,Y):
     model.fit(X[train_index],Y[test_index] ..... so on .....

【问题讨论】:

【参考方案1】:

里面。

对于每一次折叠,您都希望拥有一个全新的模型。这意味着您的模型不能通过来自另一个折叠的数据来学习任何权重(如果您在内部执行此操作会发生这种情况,因为在每个折叠中您都在同一个实例上操作)。 k-fold 学习的重点是检查您的模型在数据集的一小部分上的表现,因此它不应该包含有关其他折叠数据的任何信息。

【讨论】:

以上是关于在 K-Fold Cross 验证中的 keras 中在哪里创建模型对象?的主要内容,如果未能解决你的问题,请参考以下文章

在 k-Fold 交叉验证中,是不是为 Sklearn 中的每个折叠启动了一个新模型?

交叉验证(cross validation)是什么?K折交叉验证(k-fold crossValidation)是什么?

我在 k-fold cross_validation 中使用相同的 Tfidf 词汇吗

K-fold Cross-Validation - 在每次折叠后初始化网络?

sklearn中K-Fold Cross Validation中每个折叠的预测值

python Keras K-fold