Praktikumide aruanne Automaatjuhtimissüsteemide jätkukursus
% hea. Lineaarse aktiveerimis
% funktsiooniga on 1 neuron sama täpne.
net.trainFcn = 'trainlm' %treenimisfunktsioon Levenberg
% Marquardt teist järku tuletiste maatriksil põhinev
net.trainParam.epochs=5000 %iteratsioonide arv
Treenime selle loodud närvivõrgu valitud parameetritega ja algoritmiga.
net=train(net,P,T)
%sim(net,[-1;2]) - närvivõrk oskab mitteilmutatult arvutada 0.3*x1 + 0.9*x2
%ans =
% 1.5000
W1=net.IW{1,1} %sisendite kaalukoefitsendid
W2=net.LW{2,1} %kihi kaalukoefintsendid
B1=net.b{1} %iga neuroni nihe (bias), aktiveerimisfunktisooni nihe
B2=net.b{2}
W2*B1+B2 % peaaegu null - järelikult W_2*0_1-0_2
Proovisime ka keerulisemat funktsiooni
y=(x_1*x_2)/((x_1+x_2)^2+10)
Sellist asja ei saaks ainult lineaarsete kihtidega lahendada, vähemalt peidetud kiht
peab olema mittelineaarse aktiveerimisfunktsiooniga.
Vajab peidetul kihil päris palju neuroneid (30 on piisav), viga on suurem,
lahendamine võtab aega (tuleb ehk iteratsioonide arvu tõsta)