📄 bp1.m
字号:
clc
clear
close all
%定义要逼近的非线性函数
x1=[-1:0.1:1];
x2=[-1:0.1:1];
t=sin(pi*x1)*cos(pi*x2);
figure;
mesh(x1,x2,t);
title('要逼近函数的三维图形');
xlabel('x1轴');
ylabel('x2轴');
zlabel('输出函数');
%建立相应的前馈BP网络
p=[-1,1;-1,1];
net=newff(p,[8,8,64,1],{'radbas' 'netprod' 'normprod' 'purelin'},'trainlm');
net.trainParam.epochs=20;
net.trainParam.goal=0.05;
[net,tr]=train(net,p,t);
m1=tr;
y1=net.trainParam.goal;
y=sim(net,p);
figure;
mesh(x1,x2,y);
title('训练后的网络仿真结果');
xlabel('x1轴');
ylabel('x2轴');
zlabel('仿真输出');
eg=0.05;
r=0.25; %学习率
net=newrb(p,t,eg,r);
net.trainParam.epochs=20;
net.trainParam.goal=0.05;
[net,tr]=train(net,p,t);
m2=tr;
y2=net.trainParam.goal;
plot(m1,y1,'-',m2,y2,'--');
axis([1,10,0,0.3]);
title('学习曲线');
xlabel('t');
ylabel('e(RMS)');
legend('学习率为0.7','学习率为0.25');
grid on;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -