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

Вид материалаДокументы
Функции настройки параметров
Подобный материал:
1   ...   19   20   21   22   23   24   25   26   ...   33

C381. MAE


Получим информацию о данной функции и ее производной

mae('name'), mae('deriv'), mae('pnames')


ans =

Mean absolute error

ans =

dmae

ans =

{}

Сформируем двухслойную нейронную сеть прямой передачи с одноэлементным входом, изменяющимся в диапазоне [–10 10], которая имеет 4 скрытых нейрона с функцией активации tansig и 1 нейрон на выходе с функцией активации purelin:

net = newff([-10 10],[4 1],{'tansig','purelin'});

Зададим векторы входа и целей

P = [-10 -5 0 5 10]; T = [ 0 0 1 1 1];

Промоделируем исходную нейронную сеть и вычислим ее ошибку

Y = sim(net, P); E = T-Y


E =

Columns 1 through 4

0.3265 0.0113 0.6208 -0.3710

Column 5

0.1998

Вычислим функционал качества mae

net.performFcn = 'mae'; perf = mae(E)


perf =

0.3059

Теперь вычислим градиенты функционала качества.

Для вычисления градиентов сформируем вектор настраиваемых параметров (веса и смещения):

X = [net.IW{1}; net.b{1}]'

X =

Columns 1 through 4

0.5600 -0.5600 0.5600 0.5600

Columns 5 through 8

-5.6000 1.8667 1.8667 5.6000

Градиент функционала по вектору ошибки вычисляется следующим образом

dPerf_dE = dmae('e',{E},X); [dPerf_dE{:}]

ans =

1 1 1 -1 1

Градиент функционала по вектору параметров

dPerf_dX = dmae('x',{E},{X})

dPerf_dX =

0

Функции настройки параметров

С383. LEARNP


Определим сеть со случайными векторами входа p и ошибки e:

p = rand(2,1); e = rand(3,1);

Вызов функции learnp можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:

dW = learnp([],p,[],[],[],[],e,[],[],[],[],[])

dW =

0.0252 0.0198

0.0156 0.0123

0.1798 0.1412

С384. LEARNPN


Определим сеть со случайными векторами входа p и ошибки e:

p = rand(2,1); e = rand(3,1);

Вызов функции learnpn можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:

dW = learnpn([],p,[],[],[],[],e,[],[],[],[],[])


dW =

0.4122 0.1003

0.3301 0.0803

0.6055 0.1473

С385. LEARNWH


Определим сеть со случайными векторами входа p и ошибки e с 2-элементным входом и тремя нейронами и параметром скорости настройки lr:

p = rand(2,1); e = rand(3,1); lp.lr = 0.5;

Вызов функции learnwh можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:

dW = learnwh([],p,[],[],[],[],e,[],[],[],lp,[])


dW =

0.0071 0.0042

0.3130 0.1875

0.1695 0.1015

C387. LEARNGD


Допустим, что на некотором шаге настройки слоя с 3 нейронами и двухэлементным входом известен случайный вектор градиента gW, а параметр скорости настройки задан равным 0.5:

gW = rand(3,2); lp.lr = 0.5;

Тогда вызов функции learngd можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:

dW = learngd([],[],[],[],[],[],[],gW,[],[],lp,[])


dW =

0.3077 0.3691

0.3960 0.0881

0.4609 0.2029

C388. LEARNGDM


Допустим, что на некотором шаге настройки слоя с 3 нейронами и двухэлементным входом известен случайный вектор градиента gW, а параметры скорости настройки и возмущения заданы равными 0.6 и 0.8, соответственно:

gW = rand(3,2); lp.lr = 0.6; lp.mc = 0.8;

Тогда вызов функции learngdm можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:

ls = []; [dW,ls] = learngdm([],[],[],[],[],[],[],gW,[],[],lp,ls)

dW =

0.5613 0.5362

0.5501 0.0347

0.2462 0.2117

ls =

dw: [3x2 double]

ls.dw

ans =

0.5613 0.5362

0.5501 0.0347

0.2462 0.2117

C389. LEARNLV1


Определим слой нейронной сети с двухэлементным входом и тремя нейронами сеть со случайными массивами входа p, весов w и выхода a; зададим также градиент функционала по выходу gA и параметр скорости настройки lr:

p = rand(2,1); w = rand(3,2);

a = compet(negdist(w,p));

gA = [-1;1;1]; lp.lr = 0.5;

Вызов функции learnlv1 можно организовать следующим образом, поскольку не все входные аргументы требуются для вызова этой функции:

dW = learnlv1(w,p,[],[],a,[],[],[],gA,[],lp,[])

dW =

0 0

0 0

-0.3072 0.0945