Notebook "нейронные сети" Глава 2
Вид материала | Документы |
C428. getx C428. setx C429. calcperf C430. calcgx |
- Программа дисциплины «Теория нечетких множеств и нейронные сети» Для специальности, 567.45kb.
- Самостоятельная работа по прогнозированию экономических процессов на тему: нейронные, 148.65kb.
- Лекция 2 Лекция «Нейронные сети» Начнем с определения: Искусственные нейронные сети, 131.57kb.
- "Нейроновые сети ", 374.46kb.
- Нейронные сети как механизм представления лексико-семантической информации, 376.06kb.
- Программа, 39.37kb.
- Нейронные сети: алгоритм обратного распространения, 336.15kb.
- Предупреждение. Спасение. Помощь, 3059.76kb.
- Нейрокомпьютерная обработка сигналов и изображений, 184.71kb.
- Нейронные сети: основы теории / А. И. Галушкин. М. Горячая линия Телеком, 2010., 585.42kb.
C428. GETX
Создадим однослойную сеть с тремя нейронами и двухэлементным вектором входа со значениями из диапазонов [0 1] и [-1 1]:
net = newff([0 1; -1 1],[3]); gensim(net)
Выведем значения массивов весов и смещений:
net.iw{1,1}, net.b{1}
ans =
-1.0809 -2.3639
4.7917 -0.3739
-1.9788 -2.2138
ans =
2.9653
-2.3959
-1.4355
Эти же значения можно вывести в виде объединенного вектора, который содержится в описании нейронной сети:
x = getx(net); x'
ans =
Columns 1 through 4
-1.0809 4.7917 -1.9788 -2.3639
Columns 5 through 8
-0.3739 -2.2138 2.9653 -2.3959
Column 9
-1.4355
C428. SETX
Создадим однослойную сеть с тремя нейронами и двухэлементным вектором входа со значениями из диапазонов [0 1] и [-1 1]:
net = newff([0 1; -1 1],[3]); gensim(net)
net.iw, net.b
ans =
[3x2 double]
ans =
[3x1 double]
Сеть имеет 6 весовых коэффициентов и 3 элемента смещений, то есть всего 9 значений. Зададим этим элементам случайные значения и включим их в описание нейронной сети:
net = setx(net,rand(9,1));
Эти значения можно вывести на экран с помощью команды
getx(net)
ans =
0.6252
0.7334
0.3759
0.0099
0.4199
0.7537
0.7939
0.9200
0.8447
C429. CALCPERF
Создадим линейную сеть с одним входом, изменяющимся в диапазоне от 0 до 1, двумя нейронами и линией задержки на входе с параметрами [0 2 4]; в сети используется обратная связь с линией задержки [1 2]:
net = newlin([0 1],2,[0 2 4]);
net.layerConnect(1,1) = 1;
net.layerWeights{1,1}.delays = [1 2]; gensim(net)
Вычислим вектор запаздывающих входов Pd, если заданы реализация вектора входа P для 5 шагов по времени, вектор начальных условий на линии задержки входов Pi:
P = {0 0.1 0.3 0.6 0.4}; Pi = {0.2 0.3 0.4 0.1}; Pc = [Pi P];
Pd = calcpd(net,5,1,Pc);
сформируем вектор начальных условий на линии задержки выхода слоя для каждого из двух нейронов и массив векторов целей на 5 шагах по времени:
Ai = {[0.5; 0.1] [0.6; 0.5]};
Tl = {[0.1;0.2] [0.3;0.1], [0.5;0.6] [0.8;0.9], [0.5;0.1]};
Извлечем объединенный вектор весов и смещений из описания сети
X = getx(net);
Вычислим функционал качества и сигналы в сети
[perf,El,Ac,N,BZ,IWZ,LWZ] = calcperf(net,X,Pd,Tl,Ai,1,5);
Выведем значения функционала качества и массива ошибок слоя
perf, cat(2, El{:})
perf =
0.2470
ans =
Columns 1 through 4
0.1000 0.3000 0.5000 0.8000
0.2000 0.1000 0.6000 0.9000
Column 5
0.5000
0.1000
C430. CALCGX
Создадим линейную сеть с одним входом, изменяющимся в диапазоне от 0 до 1, двумя нейронами и линией задержки на входе с параметрами [0 2 4]; в сети используется обратная связь с линией задержки [1 2]:
net = newlin([0 1],2,[0 2 4]);
net.layerConnect(1,1) = 1;
net.layerWeights{1,1}.delays = [1 2]; gensim(net)
Вычислим вектор запаздывающих входов Pd, если заданы реализация вектора входа P для 5 шагов по времени, вектор начальных условий на линии задержки входов Pi:
P = {0 0.1 0.3 0.6 0.4}; Pi = {0.2 0.3 0.4 0.1}; Pc = [Pi P];
Pd = calcpd(net,5,1,Pc);
Cформируем вектор начальных условий на линии задержки выхода слоя для каждого из двух нейронов и массив векторов целей на 5 шагах по времени:
Ai = {[0.5; 0.1] [0.6; 0.5]};
Tl = {[0.1;0.2] [0.3;0.1], [0.5;0.6] [0.8;0.9], [0.5;0.1]};
Извлечем из описания сети объединенный вектор весов и смещений сети и вычислим функционал качества и сигналы сети
X = getx(net);
[perf,El,Ac,N,BZ,IWZ,LWZ] = calcperf(net,X,Pd,Tl,Ai,1,5);
В заключение используем функцию calcgx, чтобы вычислить градиент функционала по объединенному вектору весов и смещений:
[gX,normgX] = calcgx(net,X,Pd,BZ,IWZ,LWZ,N,Ac,El,perf,1,5); gX'
ans =
Columns 1 through 4
0.1720 0.1540 0.0600 0.0420
Columns 5 through 8
0.0780 0.0800 0.0120 0.0240
Columns 9 through 12
0.0100 0.0200 0.0460 0.0320
Columns 13 through 16
0.0320 0.0140 0.4400 0.3800
normgX
normgX =
0.6440