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

Вид материалаДокументы
C305. boxdist
С306. linkdist
С307. netsum
C309. netprod
Функции инициализации С310. INIT
Подобный материал:
1   ...   12   13   14   15   16   17   18   19   ...   33

C305. BOXDIST


Пусть задан массив случайных координат трехмерного пространства, в которых размещены 10 нейронов.

pos = rand(3,10);

figure(1), clf, plotsom(pos)

Требуется вычислить массив максимальных координатных смещений между этими нейронами:

d = boxdist(pos)


d =

Columns 1 through 4

0 0.3489 0.6079 0.6925

0.3489 0 0.7883 0.6322

0.6079 0.7883 0 0.2023

0.6925 0.6322 0.2023 0

0.5053 0.6620 0.6220 0.6318

0.6334 0.3989 0.7898 0.7598

0.4530 0.6334 0.1549 0.3527

0.6165 0.3256 0.6768 0.6865

0.3630 0.2419 0.8707 0.7146

0.5207 0.7011 0.6201 0.6299

Columns 5 through 8

0.5053 0.6334 0.4530 0.6165

0.6620 0.3989 0.6334 0.3256

0.6220 0.7898 0.1549 0.6768

0.6318 0.7598 0.3527 0.6865

0 0.6635 0.6192 0.5456

0.6635 0 0.7472 0.2296

0.6192 0.7472 0 0.6739

0.5456 0.2296 0.6739 0

0.7444 0.6407 0.7158 0.5675

0.2628 0.7026 0.6173 0.5006

Columns 9 through 10

0.3630 0.5207

0.2419 0.7011

0.8707 0.6201

0.7146 0.6299

0.7444 0.2628

0.6407 0.7026

0.7158 0.6173

0.5675 0.5006

0 0.7835

0.7835 0

С306. LINKDIST


Пусть задан массив случайных координат трехмерного пространства, в которых размещены 10 нейронов. Требуется вычислить массив расстояний связи между этими нейронами:

pos = rand(3,10);

figure(1), clf, plotsom(pos)

d = linkdist(pos)


d =

Columns 1 through 7

0 1 1 1 1 1 1

1 0 1 1 1 1 1

1 1 0 1 1 1 1

1 1 1 0 1 1 1

1 1 1 1 0 1 2

1 1 1 1 1 0 1

1 1 1 1 2 1 0

1 1 1 1 1 1 1

1 1 1 1 1 1 1

1 1 1 1 1 1 1

Columns 8 through 10

1 1 1

1 1 1

1 1 1

1 1 1

1 1 1

1 1 1

1 1 1

0 1 2

1 0 1

2 1 0

Функции накопления

С307. NETSUM


Вычислить функцию накопления потенциала для следующих взвешенных входов:

Z1 = [ 1 2 4; 3 4 1]; Z2 = [-1 2 2; -5 -6 1];

N = netsum(Z1,Z2)

N =

0 4 6

-2 -2 2

Вычислить функцию накопления с учетом вектора смещения b. Поскольку массивы Z1 и Z2 составлены из трех векторов, то с помощью функции concur должен быть создан массив из трех копий вектора смещения b для того, чтобы все размерности совпадали:

b = [0; -1]; N = netsum(Z1,Z2,concur(b,size(Z1,2)))


N =

0 4 6

-3 -3 1

Определим две весовых матрицы входа для слоя с тремя нейронами:

Z1 = [0; 1; -1]; Z2 = [1; 0.5; 1.2];

Вычислить вход нейрона N с помощью функции netsum и затем найти производные по каждому из взвешенных входов:

N = netsum(Z1,Z2)

dN_dZ1 = dnetsum(Z1,N)

dN_dZ2 = dnetsum(Z2,N)


N =

1.0000

1.5000

0.2000

dN_dZ1 =

1

1

1

dN_dZ2 =

1

1

1

C309. NETPROD


Вычислить функцию накопления для следующих взвешенных входов:

Z1 = [ 1 2 4; 3 4 1]; Z2 = [-1 2 2; -5 -6 1];

N = netprod(Z1,Z2)

N =

-1 4 8

-15 -24 1

Вычислить функцию накопления с учетом вектора смещения b. Поскольку массивы Z1 и Z2 составлены из трех векторов, то с помощью функции concur должен быть создан массив из трех копий вектора смещения b для того, чтобы все размерности совпадали:

b = [0; -1]; N = netprod(Z1,Z2,concur(b,size(Z1,2)))


N =

0 0 0

15 24 -1

Определим два взвешенных входа для слоя с тремя нейронами:

Z1 = [0; 1; -1]; Z2 = [1; 0.5; 1.2];

Вычислить вход нейрона N с помощью функции netprod и затем найти производные по каждому из взвешенных входов:

N = netprod(Z1,Z2); N'

dN_dZ1 = dnetprod(Z1,N); dN_dZ1'

dN_dZ2 = dnetprod(Z2,N); dN_dZ2'

ans =

0 0.5000 -1.2000

Warning: Divide by zero.

> In C:\MATLAB6P1\toolbox\nnet\nnet\dnetprod.m at line 43

ans =

NaN 0.5000 1.2000

ans =

0 1 -1

Функции инициализации

С310. INIT


Сформировать персептрон с одним нейроном, вход которого имеет 2 элемента со значениями в диапазонах [0 1] и [ –2 2]:

net = newp([0 1; -2 2], 1);

net.initFcn

net.layers{1}.initFcn

net.inputWeights{1}.initFcn

net.biases{1}.initFcn

ans =

initlay

ans =

initwb

ans =

initzero

ans =

initzero

Выведем значения установленных весов и смещений:

net.IW{1,1}, net.b{1}

ans =

0 0

ans =

0

Обучим персептрон на следующих обучающих множествах

P = [0 1 0 1; 0 0 1 1]; T = [0 0 0 1];

net = train(net,P,T); net.IW{1,1}, net.b{1}

TRAINC, Epoch 0/100

TRAINC, Epoch 6/100

TRAINC, Performance goal met.


ans =

1 2

ans =

-3

Для того чтобы возвратиться к начальным значениям весов и смещений, характерных для данной сети, и предназначена функция init :

net = init(net); net.IW{1,1}, net.b{1}

ans =

0 0

ans =

0