Спуск градиента с обратной связью импульса
net.trainFcn = 'traingdm'
[net,tr] = train(net,...)
traingdm является сетевой учебной функцией, которая обновляет вес и значения смещения согласно спуску градиента с импульсом.
net.trainFcn = 'traingdm' устанавливает свойство сети trainFcn.
[net,tr] = train(net,...) обучает сеть с traingdm.
Обучение происходит согласно параметрам обучения traingdm, показанным здесь с их значениями по умолчанию:
net.trainParam.epochs | 1000 | Максимальное количество эпох, чтобы обучаться |
net.trainParam.goal | 0 | Цель производительности |
net.trainParam.lr | 0.01 | Темп обучения |
net.trainParam.max_fail | 6 | Максимальные отказы валидации |
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 | Максимальное время, чтобы обучаться в секундах |
Можно создать стандартную сеть, которая использует traingdm с feedforwardnet или cascadeforwardnet. Подготовить пользовательскую сеть, которая будет обучена с traingdm,
Установите net.trainFcn на 'traingdm'. Это устанавливает net.trainParam на параметры traingdm по умолчанию.
Установите свойства net.trainParam на требуемые значения.
В любом случае, вызывая train с получившейся сетью обучает сеть с traingdm.
Смотрите help feedforwardnet и help cascadeforwardnet для примеров.
traingdm может обучить любую сеть пока ее вес, сетевой вход, и передаточные функции имеют производные функции.
Обратная связь используется, чтобы вычислить производные производительности perf относительно переменных X смещения и веса. Каждая переменная настроена согласно спуску градиента с импульсом,
dX = mc*dXprev + lr*(1-mc)*dperf/dX
где dXprev является предыдущим изменением в весе или смещении.
Обучение останавливается, когда любое из этих условий происходит:
Максимальное количество epochs (повторения) достигнуто.
Максимальная сумма time превышена.
Производительность минимизирована к goal.
Градиент производительности падает ниже min_grad.
Производительность валидации увеличила больше, чем времена max_fail с прошлого раза, когда это уменьшилось (при использовании валидации).