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

Вид материалаДокументы
С409. srchbac
С410. premnmx
C411. prestd
C412. prepca
C413. postmnnmx
Подобный материал:
1   ...   22   23   24   25   26   27   28   29   ...   33

С409. SRCHBAC


Заданы векторы входа p и целей t, требуется сформировать нейронную сеть, выходы которой близки к заданным целям:

p = [0 1 2 3 4 5]; t = [0 0 0 1 1 1];

Выберем архитектуру двухслойной сети с прямой передачей сигнала; зададим диапазон входов от 0 до 10, первый слой имеет 2 нейрона с функцией активации tansig, второй – 1 нейрон с функцией активации logsig. Используем функции обучения traincgf и поиска одномерного экстремума srchbac.

net = newff([0 10],[2 1],{'tansig','logsig'},'traincgf');

net.trainParam.searchFcn = 'srchbac';

net.trainParam.epochs = 50; net.trainParam.show = 10;

net.trainParam.goal = 0.0001;

net = train(net,p,t); grid on

a = sim(net,p)


TRAINCGF-srchbac, Epoch 0/50, MSE 0.427245/0.0001, Gradient 0.147317/1e-006

TRAINCGF-srchbac, Epoch 9/50, MSE 7.04485e-005/0.0001, Gradient 0.00175321/1e-006

TRAINCGF, Performance goal met.


a =

Columns 1 through 4

0.0049 0.0049 0.0052 0.9813

Columns 5 through 6

0.9993 0.9993

Масштабирование и восстановление данных

С410. PREMNMX


Следующие операторы выполняют нормировку данных так, чтобы значения входа и цели попадали в интервал [-1,1]:

p = [-10 -7.5 -5 -2.5 0 2.5 5 7.5 10];

t = [0 7.07 -10 -7.07 0 7.07 10 7.07 0];

[pn,minp,maxp,tn,mint,maxt] = premnmx(p,t)


pn =

Columns 1 through 4

-1.0000 -0.7500 -0.5000 -0.2500

Columns 5 through 8

0 0.2500 0.5000 0.7500

Column 9

1.0000

minp =

-10

maxp =

10

tn =

Columns 1 through 4

0 0.7070 -1.0000 -0.7070

Columns 5 through 8

0 0.7070 1.0000 0.7070

Column 9

0

mint =

-10

maxt =

10

C411. PRESTD


Задана следующая обучающая последовательность векторов входа и целей. Требуется выполнить ее приведение к нормальному закону распределения с параметрами [0 1]

p = [-0.92 0.73 -0.47 0.74 0.29; -0.08 0.86 -0.67 -0.52 0.93];

t = [-0.08 3.4 -0.82 0.69 3.1];

[pn,meanp,stdp,tn,meant,stdt] = prestd(p,t)


pn =

Columns 1 through 4

-1.3389 0.8836 -0.7328 0.8971

-0.2439 1.0022 -1.0261 -0.8272

Column 5

0.2910

1.0950

meanp =

0.0740

0.1040

stdp =

0.7424

0.7543

tn =

Columns 1 through 4

-0.7049 1.1285 -1.0947 -0.2992

Column 5

0.9704

meant =

1.2580

stdt =

1.8982

C412. PREPCA


Зададим массив двухэлементных векторов входа и выполним их факторный анализ, удерживая только те компоненты вектора, дисперсия которых превышает 2% общей дисперсии. Сначала с помощью функции prestd приведем входные данные к нормальному закону распределения, а затем применим функцию prepca.

P = [-1.5 -0.58 0.21 -0.96 -0.79; -2.2 -0.87 0.31 -1.4 -1.2];

[pn,meanp,stdp] = prestd(P)


pn =

Columns 1 through 4

-1.2445 0.2309 1.4978 -0.3785

-1.2331 0.2208 1.5108 -0.3586

Column 5

-0.1058

-0.1399

meanp =

-0.7240

-1.0720

stdp =

0.6236

0.9148

[ptrans,transMat] = prepca(pn,0.02)


ptrans =

Columns 1 through 4

1.7519 -0.3194 -2.1274 0.5212

Column 5

0.1738

transMat =

-0.7071 -0.7071

C413. POSTMNNMX


В этом примере сначала с помощью функции premnmx выполняется масштабирование обучающей последовательности к диапазону [-1 1], затем создается и обучается нейронная сеть прямой передачи, выполняется ее моделирование и восстановление выхода с помощью функции postmnmx.

P = [-0.92 0.73 -0.47 0.74 0.29; -0.08 0.86 -0.67 -0.52 0.93];

t = [-0.08 3.40 -0.82 0.69 3.10];

[pn,minp,maxp,tn,mint,maxt] = premnmx(P,t);

net = newff(minmax(pn),[5 1],{'tansig' 'purelin'},'trainlm');

net = train(net,pn,tn); grid on

an = sim(net,pn)


TRAINLM, Epoch 0/100, MSE 4.01275/0, Gradient 12.3803/1e-010

TRAINLM, Epoch 5/100, MSE 4.2096e-026/0, Gradient 6.29848e-013/1e-010

TRAINLM, Minimum gradient reached, performance goal was not met.


an =

Columns 1 through 4

-0.6493 1.0000 -1.0000 -0.2844

Column 5

0.8578

a = postmnmx(an,mint,maxt)


a =

Columns 1 through 4

-0.0800 3.4000 -0.8200 0.6900

Column 5

3.1000