在K折叠交叉验证中,在keras中的何处创建模型对象?

在K折叠交叉验证中,在keras中的何处创建模型对象?,keras,scikit-learn,deep-learning,cross-validation,k-fold,Keras,Scikit Learn,Deep Learning,Cross Validation,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):

在何处创建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学习的重点是检查您的模型在数据集的一小部分上的执行情况,因此它不应该有任何关于其他fold数据的信息