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

Вид материалаДокументы
C432. calcjx
C433. calcjejj
С436. cell2mat
C438. con2seq, seq2con
Подобный материал:
1   ...   25   26   27   28   29   30   31   32   33

C432. CALCJX


Создадим линейную сеть с одним входом, изменяющимся в диапазоне от 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);

Зададим два начальных значения запаздывающих выходов слоя для каждого из двух нейронов и цели слоя для двух нейронов на пять шагов по времени:

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);

Теперь можно применить функцию calcjx, чтобы вычислить якобиан функционала качества по объединенной матрице весов и смещений

jX = calcjx(net,Pd,BZ,IWZ,LWZ,N,Ac,1,5);

figure(1), clf, spy(jX)

C433. CALCJEJJ


Создадим линейную сеть с одним входом, изменяющимся в диапазоне от 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)

net.iw, net.lw, net.b

ans =

[2x3 double]

ans =

[2x4 double]

ans =

[2x1 double]

Данная сеть имеет 16 настраиваемых параметров: 6 элементов весовой матрицы входа, 8 элементов весовой матрицы в обратной связи и 2 элемента вектора смещения.

Вычислим вектор запаздывающих входов 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);

В заключение используем функцию calcjejj, задав коэффициент экономии памяти равным 2

tic, [je,jj,normje] = calcjejj(net,Pd,BZ,IWZ,LWZ,N,Ac,El,1,5,2); toc, figure(1), clf, spy(je)

elapsed_time =

0.7700

Результаты будут одинаковыми при любом значении коэффициента экономии памяти, однако время вычислений будет расти. Увеличим коэффициент экономии памяти до значения 4:

tic, [je,jj,normje] = calcjejj(net,Pd,BZ,IWZ,LWZ,N,Ac,El,1,5,4); toc, figure(2), clf, spy(je)

elapsed_time =

0.9800

Операции с массивами данных

С436. CELL2MAT


C = {[1 2] [3]; [4 5; 6 7] [8; 9]};

figure(1), clf, cellplot(C), M = cell2mat(C)

M =

1 2 3

4 5 8

6 7 9

C437. COMBVEC


Рассмотрим следующие 2 выборки Р1 и Р2 и рассчитаем объединенную выборку Р:

P1 = [1 2 3; 4 5 6]; P2 = [7 8; 9 10];

P = combvec(P1,P2)

P =

1 2 3 1 2 3

4 5 6 4 5 6

7 7 7 8 8 8

9 9 9 10 10 10

Добавим выборку Р3

P3 = [4 5 6];

P = combvec(P,P3)

P =

Columns 1 through 7

1 2 3 1 2 3 1

4 5 6 4 5 6 4

7 7 7 8 8 8 7

9 9 9 10 10 10 9

4 4 4 4 4 4 5

Columns 8 through 14

2 3 1 2 3 1 2

5 6 4 5 6 4 5

7 7 8 8 8 7 7

9 9 10 10 10 9 9

5 5 5 5 5 6 6

Columns 15 through 18

3 1 2 3

6 4 5 6

7 8 8 8

9 10 10 10

6 6 6 6

C438. CON2SEQ, SEQ2CON


Преобразуем числовой массив P размера 23, соответствующий групповому представлению данных, в массив ячеек S размера 13, содержащих числовые массивы размера 21 и соответствующий последовательному представлению данных:

P = [1 4 2; 2 5 3]; S = con2seq(P)

S =

Columns 1 through 2

[2x1 double] [2x1 double]

[2x1 double]

Преобразуем массив ячеек P размера Q1, содержащих массивы размера Rm*TS, который соответствует структуре группового представления, в массив ячеек S размера QTS, содержащих массивы размера Rm, и который соответствует структуре последовательного представления данных.

P = { [1 2; 1 2]; [3 4; 3 4]; [5 6; 5 6] }; S = con2seq(P,2)

S =

[2x1 double] [2x1 double]

[2x1 double] [2x1 double]

[2x1 double] [2x1 double]

Этому массиву соответствует следующее описание

cell2mat(S), figure(1), clf, cellplot(S)

ans =

1 2

1 2

3 4

3 4

5 6

5 6

Преобразуем массив ячеек S размера QTS, содержащих числовые массивы размера Rm, в массив ячеек Р размера Q1 . При этом каждая ячейка содержит числовой массив размера Rm*TS:.

S = {[1; 1] [5; 4] [1; 2]; [3; 9] [4; 1] [9; 8]}

P = seq2con(S)

S =

Columns 1 through 2

[2x1 double] [2x1 double]

[2x1 double] [2x1 double]

[2x1 double]

[2x1 double]

P =

[2x3 double]

[2x3 double]

Сформируем числовой массив P, соответствующий групповому представлению

P = cell2mat(P)

P =

1 5 1

1 4 2

3 4 9

9 1 8