当前位置:文档之家› 实验一、BP及RBP神经网络逼近

实验一、BP及RBP神经网络逼近

实验一、BP及RBP神经网络逼近
实验一、BP及RBP神经网络逼近

实验一、BP 及RBF 神经网络逼近

一、实验目的

1、了解MATLAB 集成开发环境

2、了解MATLAB 编程基本方法

3、熟练掌握BP 算法的原理和步骤

4、掌握工具包入口初始化及调用

5、加深BP、RBF 神经网络对任意函数逼近的理解

二、实验内容

1、MATLAB 基本指令和语法。

2、BP 算法的MATLAB 实现

三、实验步骤

1、熟悉MATLAB 开发环境

2、输入参考程序

3、设置断点,运行程序,观察运行结果

四、参考程序

1. BP算法的matlab实现程序

%lr为学习步长,err_goal期望误差最小值,max_epoch训练的最大次数,隐层和输岀层初值为零lr=0.05; err_goal=0.0001; max_epoch=10000;

a=0.9;

Oi=0;

Ok=0;

%两组训练集和目标值

X=[1 1;-1 -1;1 1];

T=[1 1;1 1];

%初始化wki , wij ( M为输入节点j的数量;q为隐层节点i的数量;L为输岀节点k的数量) [M,N]=size(X); q=8;

[L,N]=size(T);

wij=rand(q,M);

wki=rand(L,q);

wij0=zeros(size(wij)); wki0=zeros(size(wki));

for epoch=1:max_epoch

% 计算隐层各神经元输岀

NETi=wij*X;

for j=1:N

for i=1:q Oi(i,j)=2/(1+exp(-NETi(i,j)))-1;

end

end

% 计算输出层各神经元输出NETk=wki*Oi;

for i=1:N

for k=1:L Ok(k,i)=2/(1+exp(-NETk(k,i)))-1;

end

end

% 计算误差函数E=((T-Ok)'*(T-Ok))/2;

if (E

end

% 调整输出层加权系数deltak=Ok.*(1-Ok).*(T-Ok); w=wki;

wki=wki+lr*deltak*Oi';

wki0=w;

% 调整隐层加权系数deltai=Oi.*(1-Oi).*(deltak'*wki)'; w=wij;

wij=wij+lr*deltai*X';

wij0=w;

end

epoch % 显示计算次数

%根据训练好的wki ,wij 和给定的输入计算输出X1=X;

%计算隐层各神经元的输出NETi=wij*X1;

for j=1:N

for i=1:q Oi(i,j)=2/(1+exp(-NETi(i,j)))-1;

end

end

%计算输出层各神经元的输出NETk=wki*Oi;

for i=1:N

for k=1:L Ok(k,i)=2/(1+exp(-NETk(k,i)))-1;

end end

Ok % 显示网络输出层的输出

2、BP逼近任意函数算法的matlab实现程序

X=-4:0.08:4;

T=1.1*(1-X+2*X.A2).*exp(-X.A2./2);

net=newff(minmax(X),[20,1],{'tansig','purelin'});

net.trainParam.epochs=15000;

net.trainParam.goal=0.001;

net=train(net,X,T);

X1=-1:0.01:1;

y=sim(net,X1);

figure;

plot(X1,y,'-r',X,T,':b','LineWidth',2);

3.RBF能够逼近任意的非线性函数

X=-4:0.08:4;

T=1.1*(1-X+2*X.A2).*exp(-X.A2./2);

net=newrb(X,T ,0.002,1);

X1=-1:0.01:1;

y=sim(net,X1);

figure;

plot(X1,y,'-r',X,T ,':b','LineWidth',3);

五、思考题

1. 将结果用图画出。

2?假设训练样本X=[1 -1;1 -1;-1 1] ,目标输出T=[1 1;1 1],建立一个3个输入,单隐层8个神经元,输出层2个神经元的网络结构,其中隐层、输出层神经元的传递函数均为sigmoid函数,

(1)试利用BP学习算法实现该网络的训练过程;

( 3)观察两种学习算法的运行结果,比较两种算法的优缺点。

相关主题
文本预览
相关文档 最新文档