Подтвердить что ты не робот

Какие данные валидации используются в последовательной модели Keras?

Мой вопрос прост, какие данные проверки переданы model.fit в последовательной модели , используемой для?

И влияет ли это на то, как обучается модель (обычно используется набор валидации, например, для выбора гиперпараметров в модели, но я думаю, что этого не происходит здесь)?

Я говорю о наборе проверки, который можно передать следующим образом:

# Create model
model = Sequential()
# Add layers
model.add(...)

# Train model (use 10% of training set as validation set)
history = model.fit(X_train, Y_train, validation_split=0.1)

# Train model (use validation data as validation set)
history = model.fit(X_train, Y_train, validation_data=(X_test, Y_test))

Я немного исследовал, и я увидел, что keras.models.Sequential.fit вызывает keras.models.training.fit, который создает переменные типа val_acc и val_loss (к которым можно получить доступ из Callbacks). keras.models.training.fit также вызывает keras.models.training._fit_loop, который добавляет данные проверки в callbacks.validation_data, а также вызывает keras.models.training._test_loop, который будет зацикливать данные проверки пакетами в self.test_function модели. Результат этой функции используется для заполнения значений журналов, которые являются значениями, доступными из обратных вызовов.

После видя все это, я чувствую, что множество проверки передается model.fit не используются для проверки что-либо во время тренировки, и его единственное применение, чтобы получить обратную связь о том, как тренированный модель будет выполнять в каждой эпохе для полностью независимого задавать. Следовательно, было бы okey использовать тот же набор проверки и тестирования, верно?

Может ли кто-нибудь подтвердить, имеет ли подтверждение, установленное в model.fit, какую-либо другую цель помимо чтения из обратных вызовов?

4b9b3361

Ответ 1

Если вы хотите построить надежную модель, вы должны следовать этому конкретному протоколу разделения ваших данных на три набора: один для обучения, один для проверки и один для окончательной оценки, который является набором тестов.

Идея состоит в том, что вы тренируетесь на своих данных обучения и настраиваете свою модель с результатами метрик (точность, потери и т.д.), Которые вы получаете из своего набора проверки.

Ваша модель не "видит" ваш проверочный набор и не обучается ему, но вы, как архитектор и мастер гиперпараметров, настраиваете модель в соответствии с этими данными. Поэтому это косвенно влияет на вашу модель, потому что это напрямую влияет на ваши дизайнерские решения. Вы подталкиваете свою модель для правильной работы с данными проверки, что может привести к наклону.

Именно по этой причине вы оцениваете итоговый балл вашей модели только по тем данным, которые ни ваша модель, ни вы сами не использовали - и это третья часть данных, ваш набор тестов.

Только эта процедура гарантирует, что вы получите незатронутое представление о качестве ваших моделей и сможете обобщить то, что узнали на совершенно невидимых данных.

Ответ 2

В этом видео на YouTube объясняется, что такое набор проверки, почему он полезен и как реализовать набор проверки в Keras. Создание набора проверки в Keras

Используя набор для проверки, вы, по сути, берете часть своих выборок из своего учебного набора или создаете совершенно новый набор вместе и вынимаете образцы из этого набора из обучения.

В течение каждой эпохи модель будет обучаться на образцах в обучающем наборе, но НЕ будет обучаться на образцах в проверочном наборе. Вместо этого модель будет проверяться только на каждом образце в наборе проверки.

Цель этого состоит в том, чтобы вы могли оценить, насколько хорошо ваша модель может обобщать. Это означает, насколько хорошо ваша модель способна предсказывать данные, которые она не видела во время обучения.

Наличие набора для проверки также позволяет лучше понять, подходит ли ваша модель или нет. Это можно интерпретировать, сравнивая acc и loss из ваших тренировочных образцов с val_acc и val_loss из ваших val_loss образцов. Например, если ваш acc высокий, но ваш val_acc отстает, это хороший признак того, что ваша модель переоснащается.