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

📄 bp_example2.m

📁 利用BP网络对一个简单的非线性神经元进行训练
💻 M
字号:
%--------------------------------------------------------------------------
% 利用两层BP网络完成函数逼近,其中隐层的神经元个数选为5个
%
% initff—对前向网络初始化
% simuff—对前向网络仿真
% trainbp--用BP算法训练前向网络
%--------------------------------------------------------------------------
clf;  % 从当前图形窗口删除所有图形对象,恢复图形窗口属性的默认设置
figure(gcf);    % gcf--获得当前图形窗口的句柄
% set(gcf,300,300);
% set(gcf, 'PaperPosition', [2 1 4 2]);
echo on;    % 允许在屏幕上显示批处理命令行
clc;
p=-1:0.1:1;     % p为输入矢量
t=[-0.9602  -0.577  -0.0729  0.3771  0.6405  0.66  0.4609...
        0.1336  -0.2013  -0.4344  -0.5  -0.393  -0.1647  0.0988...
        0.3072  0.396  0.3449  0.1816  -0.0312  -0.2189  -0.3201];   % t为目标矢量
plot(p,t,'+','linewidth',2,'markersize',14);
title('Training Vectors','fontsize',24,'fontweight','bold');
xlabel('Input Vector P','fontsize',24,'fontweight','bold');
ylabel('Target Vector T','fontsize',24,'fontweight','bold');
pause;
clc;
S1=5;
[w1,b1,w2,b2]=initff(p,S1,'tansig',t,'purelin');    % 初始化神经元,w是权值,b是阈值
echo off;
k=pickic(1);
if k==2
    w1=[3.5;  3.5;  3.5;  3.5;  3.5];
    b1=[-2.8562;  1.0774;  -0.588;  1.4083;  2.8722];
    w2=[0.2622  -0.2375  -0.4525  0.2361  -0.1718];
    b2=[0.1326];
end
echo on;
clc;
disp_freq=20;        % 学习过程显示频率
max_epoch=8000;     % 最大训练步数 
err_goal=0.02;      % 误差指标
lr=0.01;            % 学习率
tp=[disp_freq  max_epoch  err_goal  lr];
[w1,b1,w2,b2,epochs,tr]=trainbp(w1,b1,'tansig',w2,b2,'purelin',p,t,tp);   % 用BP算法训练前向网络
pause;
clc;
p=0.5;    % 利用训练完的感知器神经元进行分类
           % p=0.5时,理想输出值=0.396
a=simuff(p,w1,b1,'tansig',w2,b2,'purelin')  % 对输入矢量预处理
pause;
clc;
ploterr(tr,eg);    % 画出误差曲线
echo off;

⌨️ 快捷键说明

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