Notebook "нейронные сети" Глава 2
Вид материала | Документы |
C423. calcpd C424. calce C425. calce1 C426. formx |
- Программа дисциплины «Теория нечетких множеств и нейронные сети» Для специальности, 567.45kb.
- Самостоятельная работа по прогнозированию экономических процессов на тему: нейронные, 148.65kb.
- Лекция 2 Лекция «Нейронные сети» Начнем с определения: Искусственные нейронные сети, 131.57kb.
- "Нейроновые сети ", 374.46kb.
- Нейронные сети как механизм представления лексико-семантической информации, 376.06kb.
- Программа, 39.37kb.
- Нейронные сети: алгоритм обратного распространения, 336.15kb.
- Предупреждение. Спасение. Помощь, 3059.76kb.
- Нейрокомпьютерная обработка сигналов и изображений, 184.71kb.
- Нейронные сети: основы теории / А. И. Галушкин. М. Горячая линия Телеком, 2010., 585.42kb.
C423. CALCPD
Создадим линейную сеть с одним входом, изменяющимся в диапазоне от 0 до 1, тремя нейронами и линией задержки на входе с параметрами [0 2 4]
net = newlin([0 1],3,[0 2 4]); gensim(net)
Вычислим вектор запаздывающих входов Pd, если заданы реализация вектора входа P для 3 шагов по времени и вектор начальных условий на линии задержки Pi:
P = {0 0.1 0.3}; Pi = {0.2 0.3 0.4 0.1};
Запаздывающие входы (значения входов после прохождения через линию задержки) рассчитываются с помощью функции calcpd после их объединения в вектор Рс
Pc = [Pi P]; Pd = calcpd(net,3,1,Pc)
Pd(:,:,1) =
[3x1 double]
Pd(:,:,2) =
[3x1 double]
Pd(:,:,3) =
[3x1 double]
Теперь можно просмотреть значения запаздывающих входов для двух первых шагов
Pd{1,1,1}, Pd{1,1,2}
ans =
0
0.4000
0.2000
ans =
0.1000
0.1000
0.3000
C424. CALCE
Создадим линейную сеть с одним входом, изменяющимся в диапазоне от 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]};
[Ac,N,LWZ,IWZ,BZ] = calca(net,Pd,Ai,1,5);
Определим цели слоя для двух нейронов для каждого из 5 временных шагов и рассчитаем ошибки слоя:
Tl = {[0.1;0.2] [0.3;0.1], [0.5;0.6] [0.8;0.9], [0.5;0.1]};
El = calce(net,Ac,Tl,5)
El =
Columns 1 through 2
[2x1 double] [2x1 double]
Columns 3 through 4
[2x1 double] [2x1 double]
[2x1 double]
Просмотрим ошибки слоя 1 на временном шаге 2:
El{1,2}
ans =
0.3000
0.1000
C425. CALCE1
Создадим линейную сеть с одним входом, изменяющимся в диапазоне от 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]};
[A1,N1,LWZ1,IWZ1,BZ1] = calca1(net,Pd(:,:,1),Ai,1)
A1 =
[2x1 double]
N1 =
[2x1 double]
LWZ1 =
[2x1 double]
IWZ1 =
[2x1 double]
BZ1 =
[2x1 double]
Определим цели слоя для двух нейронов для каждого из 5 временных шагов и рассчитаем ошибки слоя на первом шаге:
Tl = {[0.1;0.2] [0.3;0.1], [0.5;0.6] [0.8;0.9], [0.5;0.1]};
El = calce1(net,A1,Tl(:,1))
El =
[2x1 double]
Просмотрим ошибку слоя на первом шаге:
El{1}
ans =
0.1000
0.2000
Теперь можно вычислить новые состояния на ЛЗ, используя массивы Ai и A, и рассчитать сигналы слоя на втором шаге по времени
Ai2 = [Ai(:,2:end) A1];
[A2,N2,LWZ2,IWZ2,BZ2] = calca1(net,Pd(:,:,2),Ai2,1);
El = calce1(net,A2,Tl(:,2)); El{1}
ans =
0.3000
0.1000
C426. FORMX
Создадим однослойную сеть с тремя нейронами и двухэлементным вектором входа со значениями из диапазонов [0 1] и [-1 1]:
net = newff([0 1; -1 1],[3]); gensim(net)
Выведем значения массивов весов и смещений:
b = net.b, b{1}
b =
[3x1 double]
ans =
-3.8200
-1.1587
-1.3436
iw = net.iw, iw{1}
iw =
[3x2 double]
ans =
2.7902 -1.9834
2.3173 -2.1301
-2.1626 -2.1704
lw = net.lw
lw =
{[]}
Объединим массивы весов и смещений в общий вектор
x = formx(net,net.b,net.iw,net.lw); x'
ans =
Columns 1 through 4
2.7902 2.3173 -2.1626 -1.9834
Columns 5 through 8
-2.1301 -2.1704 -3.8200 -1.1587
Column 9
-1.3436