Просто для расширения ответа @ mtrw , согласно документации , обучение прекращается, когда возникает любое из следующих условий:
- Достигнуто максимальное количество эпох :
net.trainParam.epochs
- Превышено максимальное количество времени :
net.trainParam.time
- Производительность сведена к цели :
net.trainParam.goal
- Градиент производительности падает ниже min_grad :
net.trainParam.min_grad
- mu превышает mu_max :
net.trainParam.mu_max
- Производительность проверки увеличилась более чем в max_fail раз с
в последний раз оно уменьшалось (при использовании проверки):
net.trainParam.max_fail
Эпохи и время ограничения позволяют установить верхнюю границу продолжительности обучения.
Цель ограничение останавливает обучение, когда производительность (ошибка) падает ниже его, и обычно позволяет регулировать уровень компромисса времени / точности: менее точные результаты для более быстрого выполнения.
Это похоже на min_grad (градиент говорит о силе «спуска») в том, что если величина градиента меньше, чем у Минграда, обучение прекращается. Это можно понять по тому факту, что если функция ошибок не сильно меняется, то мы достигаем плато, и нам, вероятно, следует прекратить обучение, поскольку мы не собираемся улучшаться значительно.
mu , mu_dec и mu_max используются для управления процессом обновления веса (обратное распространение).
max_fail обычно используется для того, чтобы избежать чрезмерной подгонки, а не для ускорения.
Мой совет, установите для time и epochs максимально возможное, что позволяют ограничения вашего приложения (в противном случае результаты будут плохими). И, в свою очередь, вы можете контролировать goal и min_grad , чтобы достичь желаемого уровня компромисса между скоростью и точностью. Имейте в виду, что max_fails не заставит вас выиграть в любое время, поскольку он в основном используется для обеспечения хорошей обобщающей способности.