在 K-Fold 交叉验证中,在 keras 中的何处创建模型对象?
Where to create model object in keras in K-Fold Cross validation?
在哪里创建 Keras 模型对象,在 K 折叠循环内部还是外部?
请解释为什么你的回答是正确的。
def model_def():
model = Sequential()
model.add(.... so on....)
model.compile(....so on ....)
return model
情况 1:- 在 K 折循环内,因此它为每个循环重新创建
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 .....
里面。
每一次折叠,你都想拥有一个全新的模型。这意味着您的模型无法通过来自另一个折叠的数据学习任何权重(如果您在内部进行操作就会发生这种情况,因为在每个折叠中您都在同一个实例上操作)。 k-fold 学习的目的是检查你的模型在一小部分数据集上的表现,所以它不应该有任何关于其他折叠数据的信息。
在哪里创建 Keras 模型对象,在 K 折叠循环内部还是外部? 请解释为什么你的回答是正确的。
def model_def():
model = Sequential()
model.add(.... so on....)
model.compile(....so on ....)
return model
情况 1:- 在 K 折循环内,因此它为每个循环重新创建
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 .....
里面。
每一次折叠,你都想拥有一个全新的模型。这意味着您的模型无法通过来自另一个折叠的数据学习任何权重(如果您在内部进行操作就会发生这种情况,因为在每个折叠中您都在同一个实例上操作)。 k-fold 学习的目的是检查你的模型在一小部分数据集上的表现,所以它不应该有任何关于其他折叠数据的信息。