Notebook "нейронные сети" Глава 2

Вид материалаДокументы
C423. calcpd
C424. calce
C425. calce1
C426. formx
Подобный материал:
1   ...   25   26   27   28   29   30   31   32   33

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