人工神经网络仿真实例
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[S2,Q]=size(T);
S1=5;
%T为S2*Q的矩阵
%选择隐含层神经元为5 %随机获得输入层到隐含层的阀值和权重
[w1,b1]=rands(S1,R);
[w2,b2]=rands(S2,S1);
%随机获得隐含层到输出层的阀值和权重
Page 6
用矢量P计算网络的输出: A1=tansig(w1*P,b1); %tansig为正切S型传递函数
运行结果如下:
如图所示:绿色 线表示的是目标 矢量相对于输入 适量的波形图; 红色代表的是初 始网络输出波形 图;蓝色代表的 是训练后网络的 输出波形。
Page 11
例3-3试用加入动量项的BP网络实现下面输入/输出关系
P=[-6.0 -6.1 -4.1 -4.0 5.0 -5.1 6.0 6.1]; T=[0 0 0.97 0.99 0.01 0.03 1.0 1.0]; net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm') inputWeights=net.IW{1,1}
Page 21
数字识别试验样本
Page 22
如图所示, 红色代表未 经过误差训 练的网络, 蓝色代表经 过误差训练 的网络。
Page 23
谢谢观赏!
Page 24
Page 17
RBF网络的逼近结果如图所示:
Page 18
下图为目标值与训练后输出值之间的关系图:
Page 19
例3-6试用BP网络进行0~9十个数字字符的识别
利用BP神经网络对阿拉伯数字进行识别前, 应先对阿拉伯数字位图样本进行预处理,即 先将256色位图转为灰度图,然后二值化,最 后进行归一化处理,以消除各数字在位置和 大小上的差异,从而提高识别的准确率。归 一化处理后的字符便可进行特征向量提取。 将所提取的特征输入到神经网络进行识别, 最后输出并显示识别结果。
解决该异或问题的网络结构如下:
+1 -1.5 +1 x1 -2 神经元3 y 神经元1
+1 +1 x2 +1 输入层 -0.5 +1 隐含层
Page 3
+1 神经元2 +1
-0.5
输出层
newp函数建立多层感知器
p = [0 0 1 1; 0 1 0 1]; %训练样本 t = [0 1 1 0]; %目标函数 net1 = newp([0 1; 0 1], 2); % 新建第一层感知器,两个神经元 net1.inputWeights{1}.initFcn = 'rands'; %随机生成权值 net1.biases{1}.initFcn = 'rands'; %随机生成阀值 i=0; %设变量i初值为0 while i==0 net1 = init(net1); %对第一层感知器初始化 a1 = sim(net1, p); % 第一层输出作为第二层输入a1 net2 = newp([0 1; 0 1], 1); % 新建第二层感知器,一个神经元 net2.trainParam.epochs = 10; %训练次数为十次 net2.trainParam.show = 1; %设置迭代次数为1 net2 = train(net2, a1, t); %训练当前网络 a2 = sim(net2, a1) %对该神经网络进行仿真 if a2 == t i=1; end end
inputbias=net.b{1}
layerWeights=net.LW{2,1} layerbias=net.b{2} net.TrainParam.show=50; net.TrainParam.lr=0.05; net.TrainParam.mc=0.9; net.TrainParam.epoch=500; net.TrainParam.goal=0.001; [net,tr]=train(net,P,T); %期望误差设置为0.001
Page 20
对于数字采用5*5共25点阵的形式,使用美观的数码管字 体。 首先,要选择一种编码方式。这里采用的是直接0-1编码 的方式。比如数字1,可以编码为:
0 0 1 0 0
Fra Baidu bibliotek
0 0 1 0 0
0 0 1 0 0
0 0 1 0 0
0 0 1 0 0
但是上图只是图像系统得到的结果,实际的图像系统总会 存在一些噪声干扰或者是非线性因素。
P=-1:0.1:1; T=[-0.96 -0.577 -0.729 -0.377 0.641 0.66 0.461 0.1336 -0.201 -0.434 -0.5 -0.393 -0.1647 0.0988 0.3072 0.396 0.3449 0.1816 -0.0312 -0.2183 -0.3201]; 解:首先对网络进行初始化: [R,Q]=size(P); %P为R*Q的矩阵
X1 0 0
|| x u 2 || 2
|| X u1 || ( x1 1) ( x2 1) 1
2
|| x u1 ||2
e 1 0.3679
1 x
0.1353 0.3679 0.3679 1
2 x
X2 0 1 0 1
2 x
1 0.367 9 0.367 9 0.135 3
1 x
1 1
Page 15
x2 1
R(x2) 1
0.1353
0
1
x1
0
0.3679
1
R(x1)
空间变换前
空间变换后
Page 16
例3-5试设计RBF网络来实现例3-2的输入/输出关系
P=-1:0.1:1; T=[-0.96 -0.577 -0.0729 0.377 0.641 0.66 0.461 0.1336 -0.201 -0.434 -0.5 -0.393 -0.1647 0.0988 0.3072 0.396 0.3449 0.1816 -0.0312 -0.2183 -0.3201]; figure(1) plot(P,T,'+'); disp_freq=10; %显示间隑次数 max_neuron=100;%最多神经元数 err_goal=0.02;%目标误差平方和 sc=1; %径向基函数的分布常数
A=sim(net,P)
E=T-A; MSE=mse(E) hold on
Page 12
网络的训练误差记录图:
Page 13
3-4试用RBF网络解决异或问题
X1
1 ( x)
w11
X2
∑
Output y
2 ( x)
w11
XOR异或
X1 X2 X1X2
0
0 1
0
1 0 1
0
1 1 0
Page 4
运行得到的结果:
a2 =0 a2 =0 a2 =0 a2 =0 0 0 0 0 0 0 0 0 0 0 0 0
a2 =1
a2 =0 a2 =0 a2 =1 a2 =0
1
0 0 1 1
1
0 0 0 1
1
0 0 0 0
Page 5
例3-2试设计BP网络来实现下面数组的函数关系
空间变换前
Page 14
1
基函数
u1 [1,1]
T
u 2 [0,0]T
|| x u1 ||
2
1 2 ( X k , X i ) exp 2 || X k X i || 2 i
1 x e
2 2
2 x e
1 ( x) e
A=sim(net,P);
E2=T-A; perf2=mse(E2,net); figure;
plot(P,T,'-g+');
hold on plot(P,Y,'-ro'); hold on plot(P,A,'-b');
Page 9
网络的训练误差记录图:
Page 10
A2=purelin(w2*A1,b2);
下面定义网络训练参数: disp_fqre=10; max_epoch=3000; err_goal=0.02; lr=0.01;
%purelin为线性传递函数
%间隑次数设置为10 %最大训练次数设置为3000 %期望误差设置为0.02 %学习效率设置为0.01
dp=[disp_freq max_neuron err_goal sc];
[W1,b1,W2,b2]=solverb(P,T,dp); y=simurb(P,W1,b1,W2,b2); hold on figure(2)
plot(P,T,'-',P,y,'o')
xlabel('Input'); ylabel('Output'); legend('目标值', '训练后输出');
TP=[disp_fqre,max_epoch,err_goal,lr]; [w1,b1,w2,b2,te,tr]=trainbpx(w1,b1,'tansig',w2,b2,'purelin ',P,T,TP) %用BP算法进行训练
Page 7
BP网络训练过程(一)
Page 8
net=newff(minmax(P),[5,1],{'tansig','purelin'},'traingdm') %创建一个前馈BP网络 Y=sim(net,P); E1=T-Y; perf=mse(E1,net); vv.P=P; vv.T=T; net.trainParam.epoch=80000; [net,tr]=train(net,P,T,[],[],vv); %对误差进行均方差性能分析
3.4 仿真实例
主讲人:殷欣
例3-1试用多层感知器解决异或问题
解:对于异或运算可以将问题转化为两类模式(即输入、输 出模式)的分类问题。 异或问题的输入输出映射如下表所示: 数据点k 1 2 输入模式X(k) (1,1) (0,1) 期望输出d(k) 0 1
3
4
(0,0)
(1,0)
0
1
Page 2