Сначала я разбил набор данных на поезд и протестировал, например:
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.4, random_state=999)
Затем я использую GridSearchCV
с перекрестной проверкой, чтобы найти наиболее эффективную модель:
validator = GridSearchCV(estimator=clf, param_grid=param_grid, scoring="accuracy", cv=cv)
И, делая это, я получаю:
Модель обучается с использованием k-1 складок в качестве обучающих данных; результирующий
Модель проверена на оставшейся части данных ( scikit-learn.org )
Но затем, читая о функции Keras fit
, документ вводит еще 2 термина:
validation_split: плавающий между 0 и 1. Фракция данных обучения
быть использованы в качестве данных проверки. Модель выделит эту фракцию
из данных обучения, не буду тренироваться на нем, и будет оценивать потери
и любые метрики модели на этих данных в конце каждой эпохи.
данные проверки выбираются из последних образцов в данных x и y
при условии, до перетасовки.
validation_data: кортеж (x_val, y_val) или кортеж (x_val, y_val,
val_sample_weights) по которому оценивать потери и любую модель
метрики в конце каждой эпохи. Модель не будет обучаться на
эти данные. validation_data переопределит validation_split.
Насколько я понимаю, validation_split
(подлежит переопределению validation_data
) будет использоваться в качестве неизмененного набора данных проверки , в то время как удержание установлено в перекрестной проверке изменения на каждом этапе перекрестной проверки.
- Первый вопрос: необходимо ли использовать
validation_split
или validation_data
, так как я уже делаю перекрестную проверку?
Второй вопрос: если это не нужно, тогда я должен установить validation_split
и validation_data
на 0 и None соответственно?
grid_result = validator.fit(train_images, train_labels, validation_data=None, validation_split=0)
Вопрос 3: Если я сделаю это, что произойдет во время тренировки, Керас просто проигнорирует шаг проверки?
Вопрос 4: Принадлежит ли validation_split
к k-1 folds
или hold-out fold
, или он будет считаться "тестовым набором" (как в случае cross validation
), который будет никогда не использовать для обучения модели.