В настоящее время я пытаюсь обучить нейронную сеть с использованием перекрестной проверки, но я не уверен, что я получаю, как работает перекрестная проверка. Я понимаю концепцию, но я не могу полностью понять, как концепция переводится на реализацию кода. Ниже приведено описание того, что я реализовал, что более или менее угадывает.Как осуществляется перекрестная проверка?
Я разделил весь набор данных на K-folds, где 1 fold - это набор проверки, 1-кратный набор тестов, а данные в оставшихся сложениях сбрасываются в обучающий набор.
Затем I цикл K раз, каждый раз переназначая проверки и проверки на другие складки. В каждом цикле я постоянно тренирую сеть (обновляю весы), используя только набор тренировок, пока ошибка, создаваемая сетью, не встретит некоторый порог. Однако ошибка, которая используется для принятия решения о прекращении обучения, производится с использованием набора проверки, а не набора тренировок. После завершения обучения ошибка снова производится, но на этот раз с использованием набора тестов. Эта ошибка из набора тестов записывается. Наконец, все веса повторно инициализируются (с использованием того же генератора случайных чисел, который использовался для их первоначальной инициализации) или сброшены каким-то образом, чтобы отменить обучение, которое было выполнено, прежде чем перейти к следующему набору тестов для проверки, обучения и тестирования ,
Как только все петли K завершатся, ошибки, зарегистрированные на каждой итерации K-петли, усредняются.
Я выделил детали, в которых я больше всего смущен. Пожалуйста, дайте мне знать, допустили ли я какие-либо ошибки!
Этот вопрос больше подходит для http://stats.stackexchange.com, чем к SO, поскольку речь идет не о программировании, а о статистике. –