#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-кратного обучения — проверить, как ваша модель работает на небольшой части набора данных, поэтому в ней не должно быть никакой информации о данных из других складок.