📄 ex22.m
字号:
% p41wf4.m
% 赋值、初始化
P=[1 -1.2];
T=[0.5 1];
[R,Q]=size(P),
[S,Q]=size(T),
%[S2,Q]=size(T2),
%画误差曲面
[W,B]=rands(S,R);
Wrange=-2:0.2:2;Brange=-2:0.2:2;
ES=errsurf(P,T,Wrange,Brange,'purelin');
mesh(ES,[60 30]);
title('Error Surface Graph')
pause
% 设计网络权值并画出投影图
[DW,DB]=solvelin(P,T); %求出理想网络全值
contour(ES,25,Wrange,Brange); %画误差的等高线
axis('equal')
hold on
plot(DW,DB,'oy');
xlabel('W')
ylabel('B')
pause
%选择学习速率
LR=menu('Use a learning rate of:',...','1.7*maxlinlr',...
'2.5*maxlinlr');
disp('')
%训练权值
disp_freq=1;
max_epoch=30;
err_goal=0.001; % 期望误差
if LR==1
lr=1.74*maxlinlr(P,1); % 最佳学习速率
else
lr=2.5*maxlinlr(P,1); % 最佳学习速率
end
flop(0)
pausetime=1; %设置暂停方式为秒
A=purelin(W*B,B)
E=T-A;
SSE=sumsqr(E); %误差记录
errors=[SEE];
for epoch=1:max_epoch
if SSE<err_goal,epch=epoch-1;break,end
LW=W;LB=B;
[DW,DB]=learnwh(P,E,le);
W=W+dW;B=B+dB;
A=purelin(W*B,B); E=T-A; SSE=sumsqr(E); %学习后的再次表达式
errors=[erros,SEE];
%训练过程中的显示
if rem(epoch,disp_freq)==0
temp=flops;
plot([LW, W],[LB,B],'r-');
drawnow
flops(temp);
pause2(pausetime)
end
end
%显示误差记录
A=purelin(W*B,B);
ploterr(errors)
end
%TP=[disp_freq max_epoch err_goal lr];
%[W,B,epochs,error]=trainwh[W,B,P,T,TP] % 进行线形网络权值训练
%V=[-2 2 -2 2];
%plotpv(P,T,V);
%hold on
%plotpc(W,B)
%hold off
%end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -