В ППП NNT для создания сети Элмана предусмотрена М-функция newelm. Решаемая задача требует, чтобы сеть Элмана на каждом шаге наблюдения значений выборки могла выявить единственный ее параметр – амплитуду синусоиды. Это означает, что сеть должна иметь 1 вход и 1 выход:
R = 1; % Число элементов входа
S2 = 1;% Число нейронов выходного слоя
Рекуррентный слой может иметь любое число нейронов, и чем сложнее задача, тем большее количество нейронов требуется. Остановимся на 10 нейронах рекуррентного слоя:
S1 = 10; % Число нейронов рекуррентного слоя
Элементы входа для данной задачи изменяются в диапазоне от –2 до 2. Для обучения используется метод градиентного спуска с возмущением и адаптацией параметра скорости настройки, реализованный в виде М-функции traingdx:
net = newelm([–2 2],[S1 S2],{'tansig','purelin'},'traingdx');
Сеть использует следующие функции адаптации, инициализации, обучения и оценки качества:
adaptFcn: 'adaptwb'
initFcn: 'initlay'
performFcn: 'mse'
trainFcn: 'traingdx'
Слои сети Элмана имеют следующие характеристики:
net.layers{1} ans = dimensions: 10 distanceFcn: 'dist' distances: [10´10 double] initFcn: 'initnw' netInputFcn: 'netsum' positions: [0 1 2 3 4 5 6 7 8 9] size: 10 topologyFcn: 'hextop' transferFcn: 'tansig' userdata: [1´1 struct] | net.layers{2} ans = dimensions: 1 distanceFcn: 'dist' distances: 0 initFcn: 'initnw' netInputFcn: 'netsum' positions: 0 size: 1 topologyFcn: 'hextop' transferFcn: 'purelin' userdata: [1´1 struct] |
Скрытый слой использует функцию активации tansig, которая для сети Элмана принимается по умолчанию; инициализация весов и смещений реализуется методом NW (Nguen – Widrow) с помощью М-функции initnw. Второй слой использует линейную функцию активации purelin.
|
|
По умолчанию для настройки весов и смещений используется функция learngdm,
а для оценки качества обучения – функция mse.