⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wf4.m

📁 《面向MATLAB工具箱的神经网络理论与应用》一书中实例的所有源代码
💻 M
字号:
% wf4.m
%
P = [1 -1.2];
T = [0.5 1];
[R,Q] = size(P);
[S,Q] = size(T);
[W,B] = rands(S,R);
% 画误差曲面图
Wrange = -2:0.2:2;Brange = -2:0.2:2;      % 限定W和B值的坐标范围
ES = errsurf(P,T,Wrange,Brange,'purelin');  % 求神经元的误差平面
mesh(ES,[60,30]);                     %作三维网状面,视角【60,30】 
title('Error Surface Graph')
disp('按任一键继续')
pause

% 设计网络权值并画出投影图
figure(2);                            %作第二个图      
net = newlind(P,T);                    %求理想的权值和偏差
DW = net.iw{1,1};DB = net.b{1};        %赋理想的权值和偏差
[C,h] = contour(Wrange,Brange,ES);     %作等高线图,ES为高
                                  %返回等高线矩阵C,列向量h是线或对象的句柄,
                                  %一条线一个句柄,这些被用作CLABEL的输入, 
                                  %每个对象包含每个等高线的高度 
clabel(C,h)                         %标上高度值
colormap cool                      %桌面的颜色cool(青和洋红)
axis('equal')
hold on
plot(DW,DB,'ob');
xlabel('W'),ylabel('B')
disp('按任一键继续')
pause

LR = menu('Use a learning rate of; ',...     %选择学习速率
        '1.7*maxlinr',...
        '2.5*maxlinr');
    disp('')
% 训练权值 
disp_freq=1;
max_epoch=30;
err_goal=0.001;
if LR==1
   lp.lr=1.7*maxlinlr(P,'bias');
else     
   lp.lr=2.5*maxlinlr(P,'bias');
end
a = W*P+B;
A = purelin(a);
E=T-A;SSE=sumsqr(E);                 %求误差矩阵元素的平方和 
errors = [SSE];
for epoch = 1: max_epoch                %训练权值
    if SSE<err_goal
        epoch = epoch-1;
        break
    end
LW = W;LB = B;
dw = learnwh([],P,[],[],[],[],E,[],[],[],lp,[]);
db=learnwh(B,ones(1,Q),[],[],[],[],E,[],[],[],lp,[]);
W = W+dw;B = B+db;
a = W*P+B;
A = purelin(a);
E=T-A;SSE=sumsqr(E);
errors=[errors SSE];                     %把误差变为一个行向量
if  rem(epoch,disp_freq)==0
    plot([LW W],[LB B],'r-');             %显示权值和偏差向量训练图  
    drawnow                          %刷新
end
end
hold off
figure(3);
m=W*P+B;
a=purelin(m);
plot(errors);                            %作每次训练的误差图

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -