Функции моделирования сети
SIM
| Моделирование нейронной сети
| Синтаксис:
[Y,Pf,Af,E,perf] = sim(net,P,Pi,Ai,T)
[Y,Pf,Af,E,perf] = sim(net,{Q TS},Pi,Ai,T)
[Y,Pf,Af,E,perf] = sim(net,Q,Pi,Ai,T)
Описание:
Функция [Y, Pf, Af E, perf] = sim(net, P, Pi, Ai, T) выполняет моделирование нейронной сети и имеет следующие входные и выходные аргументы.
Входные аргументы:
net – имя нейронной сети;
P – массив входов;
Pi – начальные условия на ЛЗ входов, по умолчанию нулевой вектор;
Ai – начальные условия на ЛЗ слоев, по умолчанию нулевой вектор;
T – вектор целей, по умолчанию нулевой вектор.
Выходные аргументы:
Y – массив выходов;
Pf – состояния на ЛЗ входов после моделирования;
Af – состояния на ЛЗ слоев после моделирования;
E – массив ошибок;
perf – значение функционала качества.
Заметим, что аргументы Pi, Ai, Pf и Af являются необязательными и применяются в случае динамических сетей с ЛЗ.
Входные аргументы P и T могут иметь 2 формата: cell array и double array. Формат cell array наиболее прост для понимания и соответствует последовательному представлению данных.
Последовательное представление данных. Каждую строку массива ячеек можно рассматривать как временную последовательность, и тогда описание многомерной сети может быть выполнено следующим образом:
P – массив ячеек размера Ni´TS, каждый элемент которого P{i, ts} – числовой массив размера Ri´Q;
T – массив ячеек размера Nt´TS, каждый элемент которого P{i, ts} – числовой массив размера Vi´Q;
Pi –массив ячеек размера Ni´ID, каждый элемент которого Pi{i, k} – числовой массив размера Ri´Q;
Ai – массив ячеек размера Nl´LD, каждый элемент которого Ai{i, k} – числовой массив размера Si´Q;
Y – массив ячеек размера No´TS, каждый элемент которого Y{i, ts} – числовой массив размера Ui´Q;
Pf – массив ячеек размера Ni´ID, каждый элемент которого Pf{i, k} – числовой массив размера Ri´Q;
Af – массив ячеек размера Nl´LD, каждый элемент которого Af{i, k} – числовой массив размера Si´Q.
Параметры описания массивов ячеек и их связь с параметрами сети показаны в следующей таблице.
Параметр описания
| Параметр сети
| Назначение
| Ni
| net.numInputs
| Количество векторов входа
| Nl
| net.numLayers
| Количество слоев
| No
| net.numOutputs
| Количество выходов
| Nt
| net.numTargets
| Количество целевых выходов
| ID
| net.numInputDelays
| Максимальное значение задержки на входе
| TS
|
| Число шагов по времени
| Q
|
| Количество реализаций для фиксированного момента времени
| LD
| net.numLayerDelays
| Максимальные значения задержек для слоев
| Ri
| net.inputs{i}.size
| Количество элементов i-го вектора входа
| Si
| net.layers{i}.size
| Количество нейронов i-го слоя
| Vi
| net.targets{i}.size
| Количество элементов i-го вектора цели
| Ui
| net.outputs{i}.size
| Количество элементов i-го вектора выхода
|
Столбцы массивов начальных условий Pi, Pf, Ai, Af упорядочены следующим образом:
Pi{i, k} – значение начального условия для линии задержки i-го входа в момент времени ts = k – ID;
Pf{i, k} – значение начального условия для линии задержки i-го входа в момент времени ts = TS + k – ID;
Ai{i, k} – значение начального условия для линии задержки i-го слоя в момент времени ts = k – LD;
Af{i, k} – значение начального условия для линии задержки i-го слоя в момент времени ts = TS + k – LD.
Групповое представление данных можно использовать только при адаптации статических сетей (TS = 1). При этом следует помнить, что при переходе от формата последовательного представления данных cell array к формату группового представления double array массив ячеек, содержащий, например, Ni числовых массивов размера Ri´Q преобразуется в единственный числовой массив размера ´Q.
Следующая таблица поясняет связь этих форм представления.
| Формат
| Аргумент
| Cell array
| Double array
|
| Size(P)
| Size(P{I,1})
| Size(P)
|
P
|
Ni´1
|
Ri´Q
|
|
T
|
Nt´1
|
Vi´Q
|
|
Pi
|
Ni´ID
|
Ri´Q
|
|
Ai
|
Nl´LD
|
Si´Q
|
|
Y
|
No´1
|
Ui´Q
|
|
Pf
|
Ni´ID
|
Ri´Q
|
|
Af
|
Nl´LD
|
Si´Q
|
|
Функция [Y, Pf, Af, E, perf] = sim(net, {Q TS}, Pi, Ai, T) применяется для моделирования динамических сетей без входов при последовательном представлении данных.
Функция [Y, Pf, Af, E, perf] = sim(net, Q, Pi, Ai, T) применяется для моделирования динамических сетей без входов при групповом представлении данных.
Пример:
Создадим нейронную сеть персептрона с одним слоем и двухэлементным входом с диапазоном значений [0 1] и одним нейроном:
net = newp([0 1;0 1],1);
Теперь можно промоделировать персептрон, подавая различные последовательности векторов входа: 1 вектор с двумя элементами, группа из двух векторов с тремя элементами, последовательность из трех векторов, что соответствует различным формам представления данных:
p1 = [.2; .9]; a1 = sim(net,p1)
p2 = [.2 .5 .1 ;.9 .3 .7]; a2 = sim(net,p2)
p3 = {[.2; .9] [.5; .3] [.1; .7]}; a3 = sim(net,p3)
a1 = 1
a2 = 1 1 1
a3 = [1] [1] [1]
В данном случае в качестве результата выводятся только выходы нейрона.
Создадим динамическую однослойную линейную сеть с двумя нейронами, трехэлементным входом с диапазоном значений [0 2] и ЛЗ на входе [0 1]:
net = newlin([0 2;0 2;0 2],2,[0 1]);
Линейный слой моделируется с последовательностью из двух векторов входа для заданных по умолчанию начальных условия на ЛЗ:
p1 = {[2; 0.5; 1] [1; 1.2; 0.1]};
[y1,pf] = sim(net,p1)
y1 = [2´1 double] [2´1 double]
pf = [3´1 double]
Затем этот слой моделируется еще для трех векторов, используя состояния на элементах задержки как новые начальные условия:
p2 = {[0.5; 0.6; 1.8] [1.3; 1.6; 1.1] [0.2; 0.1; 0]};
[y2,pf] = sim(net,p2,pf)
y2 = [2´1 double] [2´1 double] [2´1 double]
pf = [3´1 double]
Создадим двухслойную сеть Элмана с одноэлементным входом с диапазоном значений [0 1], имеющую 3 нейрона с функцией активации tansig в слое 1 и 2 нейрона с функцией активации purelin в слое 2. Сеть Элмана имеет ЛЗ [0 1] при переходе от слоя 1 к слою 2:
net = newelm([0 1],[3 2],{'tansig','purelin'});
Сеть моделируется для трехэлементного вектора входа, используя заданные по умолчанию начальные условия на ЛЗ:
p1 = {0.2 0.7 0.1};
[y1,pf,af,e,perf] = sim(net,p1)
y1 = [2´1 double] [2´1 double] [2´1 double]
pf = Empty cell array: 1–by–0
af =
[3´1 double]
[2´1 double]
e = [2´1 double] [2´1 double] [2´1 double]
perf = 0.8153
[e{:}]
ans =
0.4779 –0.5393 1.0238
–1.0069 –1.3680 –0.6627
Выполним еще 1 шаг моделирования, но теперь для четырехэлементного вектора входа, используя состояния на элементах задержки как новые начальные условия:
p2 = {0.1 0.9 0.8 0.4};
[y1,pf,af,e,perf] = sim(net,p2,pf,af)
y2 = [2´1 double] [2´1 double] [2´1 double] [2´1 double]
pf = Empty cell array: 1–by–0
af =
[3´1 double]
[2´1 double]
e = [2´1 double] [2´1 double] [2´1 double] [2´1 double]
perf = 0.8560
[e{:}]
ans =
–0.3919 –0.3637 –0.2766 0.2490
–1.2888 –1.3479 –1.3269 –1.0886
Cправкa:
help network/sim
Сопутствующие функции: INIT, ADAPT, TRAIN.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|