Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clear all;
- nntwarn off;
- format compact
- disp_freq = 100;
- max_epoch = 20000;
- err_goal = 1e-3;
- lr=0.001;
- error=[];
- X=-1:.1:1;
- Y=-1:.1:1;
- Z=zeros(length(X), length(Y));
- XX = [];
- YY = [];
- ZZ = [];
- for i = 1 : length(X),
- for j = 1 : length(Y),
- XX = [XX X(i)];
- YY = [YY Y(j)];
- Z(i, j) = ((X(i)^2 + Y(j)^2));
- ZZ = [ZZ Z(i, j)];
- end
- end;
- P = [XX; YY];
- [R, Q] = size(P);
- S1=10;
- [S3,Q]=size(ZZ);
- S2=round(sqrt(S1*S3));
- [W1, B1] = nwtan (S1, R);
- [W2, B2] = nwtan (S2, S1);
- [W3, B3] = rands (S3, S2);
- A1 = tansig (W1*P, B1);
- A2 = tansig (W2*A1, B2);
- A3 = purelin (W3*A2, B3);
- E = ZZ - A3;
- SSE = sumsqr (E);
- for epoch = 1 : max_epoch,
- if SSE < err_goal, epoch = epoch - 1;
- break,end
- D3 = deltalin (A3, E);
- D2 = deltatan (A2, D3, W3);
- D1 = deltatan (A1, D2, W2);
- [dW1, dB1] = learnbp (P, D1, lr);
- [dW2, dB2] = learnbp (A1, D2, lr);
- [dW3, dB3] = learnbp (A2, D3, lr);
- W1 = W1 + dW1; B1 = B1 + dB1;
- W2 = W2 + dW2; B2 = B2 + dB2;
- W3 = W3 + dW3; B3 = B3 + dB3;
- A1 = tansig (W1*P, B1);
- A2 = tansig (W2*A1, B2);
- A3 = purelin (W3*A2, B3);
- E = ZZ - A3;
- SSE = sumsqr(E);
- error = [error, SSE];
- if (rem (epoch, disp_freq) == 0),
- epoch
- SSE
- % tu można skończyć
- A3_ = zeros (size (Z));
- for i = 1 : length(X),
- for j = 1 : length(Y),
- A1_ = tansig(W1*[X(i); Y(j)], B1);
- A2_ = tansig(W2*A1_, B2);
- A3_(i, j) = purelin(W3*A2_,B3);
- end
- end
- set(gcf,'renderer','painters');
- subplot (1, 2, 1), mesh (X, Y, Z);
- subplot (1, 2, 2), mesh (X, Y, A3_);
- pause (1e-200);
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement