Где создать объект модели в keras при K-кратной перекрестной проверке?

#keras #scikit-learn #deep-learning #cross-validation #k-fold

#keras #scikit-learn #глубокое обучение #перекрестная проверка #k-кратная

Вопрос:

Где создать объект модели 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 .....

  

Ответ №1:

Внутри.

Для каждого сгиба вы хотите иметь совершенно новую модель. Это означает, что ваша модель не может иметь весов, полученных с помощью данных из другого сгиба (это произойдет, если вы сделаете это внутри, потому что в каждом сгибе вы работаете с одним и тем же экземпляром). Цель k-кратного обучения — проверить, как ваша модель работает на небольшой части набора данных, поэтому в ней не должно быть никакой информации о данных из других складок.