Как изменить параметры по умолчанию для newfit () в MATLAB? - PullRequest
3 голосов
/ 14 ноября 2009

Я использую

net = newfit(in,out,lag(j),{'tansig','tansig'});

для создания новой нейронной сети. Значение по умолчанию для числа validation checks равно 6.

Я тренирую множество сетей, и это занимает много времени. Я думаю, не имеет значения, будут ли мои результаты менее точными, если их можно будет сделать значительно быстрее. *

Как я могу тренироваться быстрее?

  • Я полагаю, что одним из способов может быть уменьшение количества проверочных проверок. Как я могу это сделать (в коде, не используя графический интерфейс)
  • Есть ли другой способ увеличить скорость.

Как я уже сказал, увеличение скорости может привести к небольшой потере точности.

Ответы [ 3 ]

5 голосов
/ 15 ноября 2009

Просто для расширения ответа @ 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 не заставит вас выиграть в любое время, поскольку он в основном используется для обеспечения хорошей обобщающей способности.

1 голос
/ 14 ноября 2009

(Отказ от ответственности: у меня нет набора инструментов нейронной сети, поэтому я только экстраполирую из документации Mathworks)

Это выглядит из ваших входных параметров, как будто вы используете TRAINLM . Согласно документации, вы можете установить параметр net.trainParam.max_fail для изменения проверок достоверности.

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

Для более грубого подхода вы также можете контролировать максимальное количество итераций, устанавливая для параметра net.trainParam.epochs значение, которое меньше значения по умолчанию 100. Вы также можете установить параметр net.trainParam.time для ограничения количества секунд.

Вероятно, вам следует установить net.trainParam.show на NaN, чтобы пропустить любые показы.

0 голосов
/ 15 ноября 2009

Нейронные сети рассматриваются как объекты в MATLAB. Чтобы получить доступ к любому параметру до (или после) обучения, вам необходимо получить доступ к свойствам сети с помощью оператора ..

В дополнение к ответам mtrw и Amro сделайте документацию MATLAB Neural Network Toolbox вашим новым лучшим другом. Обычно это объясняет вещи гораздо лучше.

...