Упругое обратное распространение
net.trainFcn = 'trainrp'
[net,tr] = train(net,...)
trainrp - сетевая обучающая функция, которая обновляет значения веса и смещения в соответствии с алгоритмом упругого обратного распространения (Rprop).
net.trainFcn = 'trainrp' устанавливает сеть trainFcn собственность.
[net,tr] = train(net,...) обучает сеть с помощью trainrp.
Обучение происходит в соответствии с trainrp параметры обучения, показанные здесь с их значениями по умолчанию:
net.trainParam.epochs | 1000 | Максимальное количество периодов для обучения |
net.trainParam.show | 25 | Периоды между дисплеями ( |
net.trainParam.showCommandLine | false | Создание выходных данных командной строки |
net.trainParam.showWindow | true | Показать графический интерфейс пользователя для обучения |
net.trainParam.goal | 0 | Цель производительности |
net.trainParam.time | inf | Максимальное время обучения в секундах |
net.trainParam.min_grad | 1e-5 | Минимальный градиент производительности |
net.trainParam.max_fail | 6 | Максимальное количество сбоев проверки |
net.trainParam.lr | 0.01 | Уровень обучения |
net.trainParam.delt_inc | 1.2 | Приращение к изменению веса |
net.trainParam.delt_dec | 0.5 | Уменьшение до изменения веса |
net.trainParam.delta0 | 0.07 | Начальное изменение веса |
net.trainParam.deltamax | 50.0 | Максимальное изменение веса |
Можно создать стандартную сеть, использующую trainrp с feedforwardnet или cascadeforwardnet.
Подготовка пользовательской сети для обучения trainrp,
Набор net.trainFcn кому 'trainrp'. Эти наборы net.trainParam кому trainrpПараметры по умолчанию.
Набор net.trainParam свойств к требуемым значениям.
В любом случае вызов train с результирующей сетью направляет сеть с trainrp.
Вот проблема, состоящая из входов p и целевые показатели t решается с помощью сети.
p = [0 1 2 3 4 5]; t = [0 0 0 1 1 1];
Двухслойная прямая сеть с двумя скрытыми нейронами, и эта тренировочная функция создана.
Создание и тестирование сети.
net = feedforwardnet(2,'trainrp');
Здесь сеть проходит обучение и повторное тестирование.
net.trainParam.epochs = 50; net.trainParam.show = 10; net.trainParam.goal = 0.1; net = train(net,p,t); a = net(p)
Посмотрите help feedforwardnet и help cascadeforwardnet для других примеров.
trainrp может обучать любую сеть, если ее функции веса, чистого ввода и переноса имеют производные функции.
Обратное распространение используется для расчета производных производительности perf в отношении переменных веса и смещения X. Каждая переменная корректируется в соответствии со следующим:
dX = deltaX.*sign(gX);
где элементы deltaX все инициализированы в delta0, и gX - градиент. При каждой итерации элементы deltaX изменяются. Если элемент gX изменяет знак с одной итерации на следующую, затем соответствующий элемент deltaX уменьшается на delta_dec. Если элемент gX поддерживает тот же знак от одной итерации к следующей, затем соответствующий элемент deltaX увеличивается на delta_inc. См. Ридмиллер, М., и Х. Браун, «Прямой адаптивный метод для более быстрого обучения обратному распространению: алгоритм RPROP», Труды Международной конференции IEEE по нейронным Networks,1993, стр. 586-591.
Обучение прекращается при возникновении любого из следующих условий:
Максимальное количество epochs (повторы) достигается.
Максимальная сумма time превышено.
Производительность минимизирована для goal.
Градиент производительности падает ниже min_grad.
Производительность проверки возросла более чем max_fail раз с момента последнего уменьшения (при использовании проверки).
Ридмиллер, М., и Х. Браун, «Прямой адаптивный метод для более быстрого обучения обратному распространению: алгоритм RPROP», Труды Международной конференции IEEE по нейронным Networks,1993, стр. 586-591.
trainbfg | traincgb | traincgf | traincgp | traingda | traingdm | traingdx | trainlm | trainoss | trainscg