Matlab sieci wielowarstwowe

Witam. mam pewien problem otóż potrzebuję zmodyfikować to co już mam w taki sposób aby dla metody zapisanej w “trainpid” mozna było uzywać sieci wielowarstwowej (w funkcji “newff” wówczas w nawiasie kwadratowym jest liczba podająca ile neuronów jest w warstwie/warstwach ukrytej)

% uczenie neuronu metoda PID

k=1;

Ti=1;

Td=1;

X=[2 7 8 10 15 -4 0 10 -6 -10

   11 10 16 -6 -10 6 7 -15 -7 -4

   1 1 1 1 1 1 1 1 1 1];

Z=[0 0 0 0 0 1 1 1 1 1];

W(1)=rand;

W(2)=rand;

W(3)=rand;

I_suma=0;

delta_old=0;

j=1;

E=mse(Z-logsig(W*X));

j=0; %liczba epok

while E(length(E)) > 0.001 & j < 1000

    ii=randperm(10);

    for k=1:length(ii)

      i=ii(k);    

      u=W*X(:,i);

      y=logsig(u);

      delta=Z(i)-y;

        W=W+k*(delta+(I_suma+delta/Ti)+Td*(delta_old-delta))*X(:,i)';

    end

    e=mse(Z-logsig(W*X));

    E=[E e];

    j=j+1;

end 



%plot(E,'r')

clear all

P=[2 7 8 10 15 -4 0 10 -6 -10

   11 10 16 -6 -10 6 7 -15 -7 -4

   ];

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


net=newff(P,T,[3],{'purelin','tansig'},'trainpid'); 

net.trainParam.Td=1;

net.trainParam.k=1;

net.trainParam.Ti=1;

net.trainParam.min_grad=1e-1000;

net.trainParam.epochs=1000;

net.trainParam.show=1;

net.trainParam.max_fail=10;

net.trainParam.goal=0.000001;

net.trainParam.lr=0.1;

net.divideParam.trainRatio=100; % jaki procent zbioru jest wykorzystywany do uczenia

net.divideParam.valRatio=0; % do walidacji

net.divideParam.testRatio=0;

net=train(net,P,T);

Funkcje które są wykorzystywane bezpośrednio kończą sie na “pid”

Dodane 16.08.2012 (Cz) 22:18

??? help meeeee