mlp.m
来自「一个matlab实现IIR、FIR、LMS、NLMS等算法的m代码」· M 代码 · 共 54 行
M
54 行
%MLP Multilayer Perceptron algorithm%% 'ifile.mat' - input file containing:% Nr - members of ensemble% dim - iterations% Nneur - number of neurons% Sx - standard deviation of input% Sn - standard deviation of measurement noise% u - convergence factor% % 'ofile.mat' - output file containing:% MSE - mean-square errorclear all % clear memoryload ifile; % read input variablesfor j=1:Nr n=Sn*randn(dim,1); % noise at system output x=Sx*(randn(dim,1)); % input signal xl(1)=0; xl(2:dim)=x(1:dim-1); d=zeros(dim,1); yl(1)=0; dl(1)=0; % initial training vectors w1=.2*randn(Nneur,3); w2=.2*randn(Nneur,Nneur); w3=.2*randn(Nneur,1); b1=.1*randn(Nneur,1); b2=.1*randn(Nneur,1); b3=.1*randn(1,1); for i=1:dim d(i)=-.6*dl(i)+x(i)+.1*x(i)*dl(i)+.2*xl(i)*dl(i)+n(i); % unknown system output sample uxl=[x(i) dl(i) xl(i)]'; % new input vector aux=w2*sgm(w1*uxl-b1,1,2)-b2; dr(i)=sgm(aux,1,2)'*w3-b3; % neural network output sample er_out=d(i)-dr(i); % error sample er_hid2=er_out*w3.*sgd(aux,1,2); er_hid=w2'*er_hid2.*sgd(w1*uxl-b1,1,2); dw3=2*u*er_out*sgm(aux,1,2); db3=-2*u*er_out; dw2=2*u*er_hid2*sgm(w1*uxl-b1,1,2)'; db2=-2*u*er_hid2; dw1=2*u*er_hid*uxl'; db1=-2*u*er_hid; w1=w1+dw1; b1=b1+db1; % new coefficient vectors for layer 1 w2=w2+dw2; b2=b2+db2; % new coefficient vectors for layer 2 w3=w3+dw3; b3=b3+db3; % new coefficient vectors for layer 3 mse(j,i)=(d(i)-dr(i))^2; dl(i+1)=d(i); endend MSE=mean(mse);save ofile MSE;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?