Градиентный спуск с импульсом и адаптивной обратной связью темпа обучения
net.trainFcn = 'traingdx'
[net,tr] = train(net,...)
traingdx
сетевая учебная функция, которая обновляет вес и значения смещения согласно импульсу градиентного спуска и адаптивному темпу обучения.
net.trainFcn = 'traingdx'
устанавливает сеть trainFcn
свойство.
[net,tr] = train(net,...)
обучает сеть с traingdx
.
Обучение происходит согласно traingdx
учебные параметры, показанные здесь с их значениями по умолчанию:
net.trainParam.epochs | 1000
| Максимальное количество эпох, чтобы обучаться |
net.trainParam.goal | 0
| Цель производительности |
net.trainParam.lr | 0.01
| Темп обучения |
net.trainParam.lr_inc | 1.05
| Отношение, чтобы увеличить темп обучения |
net.trainParam.lr_dec | 0.7
| Отношение, чтобы уменьшить темп обучения |
net.trainParam.max_fail | 6
| Максимальные отказы валидации |
net.trainParam.max_perf_inc | 1.04
| Увеличение максимальной производительности |
net.trainParam.mc | 0.9
| Постоянный импульс |
net.trainParam.min_grad | 1e-5 | Минимальный градиент производительности |
net.trainParam.show | 25
| Эпохи между отображениями ( |
net.trainParam.showCommandLine | false | Сгенерируйте командную строку выход |
net.trainParam.showWindow | true | Покажите учебный графический интерфейс пользователя |
net.trainParam.time | inf | Максимальное время, чтобы обучаться в секундах |
Можно создать стандартную сеть, которая использует traingdx
с feedforwardnet
или cascadeforwardnet
. Подготовить пользовательскую сеть, которая будет обучена с traingdx
,
Установите net.trainFcn
к 'traingdx'
. Это устанавливает net.trainParam
к traingdx
параметры по умолчанию.
Установите net.trainParam
свойства к требуемым значениям.
В любом случае, вызывая train
с получившейся сетью обучает сеть с traingdx
.
Смотрите help feedforwardnet
и help cascadeforwardnet
для примеров.
Функциональный traingdx
комбинирует адаптивный темп обучения с обучением импульсу. Это вызывается таким же образом как traingda
, за исключением того, что это имеет коэффициент импульса mc
как дополнительный учебный параметр.
traingdx
может обучить любую сеть пока ее вес, сетевой вход, и передаточные функции имеют производные функции.
Обратная связь используется, чтобы вычислить производные производительности perf
относительно веса и переменных X
смещения. Каждая переменная настроена согласно градиентному спуску с импульсом,
dX = mc*dXprev + lr*mc*dperf/dX
где dXprev
предыдущее изменение в весе или смещении.
В течение каждой эпохи, если снижения производительности к цели, то темп обучения увеличен на факторный lr_inc
. Если производительность увеличивается больше, чем факторный max_perf_inc
, темп обучения настроен факторным lr_dec
и изменение, которое увеличило производительность, не внесено.
Обучение останавливается, когда любое из этих условий происходит:
Максимальное количество epochs
(повторения) достигнуты.
Максимальная сумма time
превышен.
Производительность минимизирована к goal
.
Градиент производительности падает ниже min_grad
.
Производительность валидации увеличила больше, чем max_fail
времена с прошлого раза это уменьшилось (при использовании валидации).