matlab神经网络Word格式文档下载.docx
- 文档编号:20811535
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:23
- 大小:27.43KB
matlab神经网络Word格式文档下载.docx
《matlab神经网络Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《matlab神经网络Word格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。
noise_range=0:
.05:
.5;
%标准差范围
max_test=100;
%噪声信号总数
network1=[];
network2=[];
T=targets;
fornoiselevel=noise_range
errors1=0;
errors2=0;
fori=1:
max_test
P=alphabet+randn(35,26)*noiselevel;
A=sim(net,P);
AA=compet(A);
errors1=errors1+sum(sum(abs(AA-T)))/2;
An=sim(netn,P);
AAn=compet(An);
errors2=errors2+sum(sum(abs(AAn-T)))/2;
end
network1=[network1errors1/26/100];
network2=[network2errors2/26/100];
plot(noise_range,network1*100,’—-’,noise_range,network2*100);
plot(noise_range,network1*100,'
-—'
noise_range,network2*100,’+’);
title('
识别误差’);
xlabel('
噪声指标'
ylabel(’不同的训练方式’);
legend('
无噪声训练'
,'
有噪声训练’);
以上是对系统性能的分析。
这里的compet函数从help上来更像是一个滤波函数,而sum函数则是用来求一个多维矩阵中各行列的和值.
noisyJ=alphabet(:
,1)+randn(35,1)*0.2;
plotchar(noisyJ);
A2=sim(net,noisyJ);
A2=compet(A2);
answer=find(compet(A2)==1);
plotchar(alphabet(:
,answer));
这里面plotchar函数就是将布尔值向量转变成具体的字母图形,下上代码是对具体的情况进行识别。
,10)+randn(35,1)*0.2;
subplot(1,2,1);
plotchar(noisyJ)
A2=compet(A2);
subplot(1,2,2);
,answer));
这段代码暴露了系统还不太成熟的一面
23)+randn(35,1)*0。
2;
plotchar(noisyJ);
A2=sim(net,noisyJ);
subplot(1,2,2);
plotchar(alphabet(:
同上,这也是一种识别出错的情况。
,4);
subplot(1,2,1);
answer=find(compet(A2)==1);
subplot(1,2,2);
这是不加噪声干扰的情况,识别仍然出错,可见训练还远没有达到要求.。
目前遇到这种问题只能通过增大训练强度来解决..。
2010—7—22
今天学习的是自组织竞争神经网络。
是一种不是基于标准答案的学习过程,而是一种基于输入数据的归类而实现的数据分析的网络。
下面主要还是来看几个典型的实例:
1.模式分类
X=[01;
01];
clusters=8;
points=10;
std_dev=.05;
P=nngenc(X,clusters,points,std_dev);
plot(P(1,:
),P(2,:
),’+r’);
title(’输入向量’);
P
(1)’);
ylabel('
P
(2)’);
%以上是为了产生一系列自由排列的8组数据点集,每组有10个数据点
net=newc([01;
01],8,。
1);
w=net。
IW{1};
),P(2,:
),’+r'
);
holdon;
circle=plot(w(:
,1),w(:
,2),’ob'
)
epochs=7;
net=train(net,P);
w=net.IW{1};
delete(circle);
plot(w(:
1),w(:
p=[0;
.2];
a=sim(net,p)
一开始之所以只有一个蓝圈,是因为网络未加训练,网络权值位于向量中心。
后来通过训练之后已经具备分类的功能,最后得出的结果是输入向量归于第4个输入类别。
2.一维自组织特征映射网络设计
angles=0:
0.5*pi/99:
0.5*pi;
P=[sin(angles);
cos(angles)];
plot(P(1,:
),P(2,:
),’+r’);
输入向量'
xlabel(’P
(1)'
ylabel(’P
(2)’);
net=newsom([01;
01],[10]);
cla
IW{1};
,1),w(:
,2),’ob’);
初始网络权值’);
w(i,1)’);
w(i,2)’);
trainParam.epochs=10;
net=train(net,P);
delete(circle);
plotsom(net。
IW{1,1},net.layers{1}。
distances)
训练后的网络权值'
w(i,1)'
ylabel(’w(i,2)’);
p=[0.5;
0。
5];
注意这个网络运行有一定的波动性,不是很稳定.
通过一系列的测试用例,发现目前该网络的精确性还不够强。
3。
二维自组织特征映射网络设计
P=rand(2,500);
plot(P(1,:
axis([—11-11]);
输入向量’);
P
(1)'
ylabel(’P
(2)’);
net=newsom([01;
01],[56]);
IW{1,1},net.layers{1}。
axis([0101]);
title(’初始网络权值’);
xlabel(’w(i,1)’);
ylabel(’w(i,2)'
trainParam.epochs=1;
net=train(net,P);
plotsom(net.IW{1,1},net。
layers{1}.distances)
axis([-11—11]);
title(’训练后的网络’);
xlabel(’w(i,1)’);
p=[0。
5;
3];
a=sim(net,p)
由于初始矩阵具有随机性,所以每次得到的结果存在一定的差异.
4.lvq模式的分类网络设计
P=[-3-2—20000223;
01—121-1—21-10];
C=[1112222111];
T=ind2vec(C);
i=1;
fori=1:
ifC(i)==1
plot(P(1,i),P(2,i),'
+'
holdon
else
plot(P(1,i),P(2,i),'
o'
ylabel(’P
(2)'
net=newlvq(minmax(P),4,[.6。
4],.1);
holdon
W1=net。
IW{1};
plot(W1(1,1),W1(1,2),’*'
输入/权值向量'
P
(1),W
(1)’);
ylabel(’P
(2),W
(2)’);
epochs=150;
show=Inf;
net=train(net,P,T);
IW{1};
W2=vec2ind(net.LW{2});
i=1;
fori=1:
plot(P(1,i),P(2,i),'
+’)
plot(P(1,i),P(2,i),'
j=1;
4
ifW2(j)==1
plot(W1(j,1),W2(j,2),’+'
markersize’,15)
plot(W1(j,1),W2(j,2),’o'
markerszie'
15)
title(’输入/权值向量'
xlabel(’P
(1),W
(1)'
ylabel(’P
(2),W
(2)’);
%对网络进行检验
p=[0。
1];
a=vec2ind(sim(net,p))
2010—7-23
今天来看看径向基函数神经网络。
相关的理论在笔记本上有选择的摘抄,先来看看几点应用:
首先是利用径向基函数网络来实现函数逼近的一个实例。
P=—1:
.1:
1;
T=[—0.9602-0。
5770-0.02970。
37710.64500。
66000。
46090。
1336-0.2013—0。
4344-0。
5000—0。
39300-.16470。
09880。
30720.39600。
34490。
1816-0.0312-0.2189—0.3021];
plot(P,T,'
+’);
title(’训练样本'
xlabel(’输入向量P’);
输出向量T’);
P=-1:
.1:
T=[—0.9602—0.5770-0。
02970。
37710。
64500.66000.46090.1336—0.2013—0.4344—0.5000-0。
39300-。
16470.09880。
30720。
39600.34490。
1816-0。
0312-0。
2189—0.3021];
plot(P,T,'
+’);
训练样本'
输入向量P’);
p=—3:
1:
3;
a=radbas(p);
plot(p,a);
径向基传递函数'
输入p'
ylabel(’输出a'
a2=radbas(p—1.5);
a3=radbas(p+2);
a4=a+a2*1+a3*0。
5;
plot(p,a,’b—'
,p,a3,’b—’,p,a4,'
m--'
%输出层的线性神经元将三个径向基函数的权值相加
径向基传递函数的权值之和'
输出a'
plot(P,T,'
输入'
X=-1:
.01:
1;
Y=sim(net,X);
holdon;
plot(X,Y);
holdoff;
legend({’目标’,’输出'
});
对于newrb函数来说,散布常数是对网络仿真影响较大的一个参数,下面来看一个关于不同散布常数的实例:
T=[—0。
9602—0。
5770—0。
02970.37710.64500.66000.46090。
1336—0。
2013-0.4344-0.5000—0。
1816—0.0312-0.2189-0.3021];
plot(P,T,’+’);
训练样本’);
输出向量T'
eg=0.02;
sc=。
01;
net=newrb(P,T,eg,sc);
X=—1:
01:
plot(X,Y);
holdoff
sc=100;
net=newrb(P,T,eg,sc);
Y=sim(net,P);
plot(P,Y);
holdoff;
sc=10;
net=newrb(P,T,eg,sc);
Y=sim(net,P);
plot(P,Y);
以上是模拟散布常数过大,过小以及比较恰当时候的拟合情况。
在实际运用过程中,如果径向基神经元的散布常数选择不当,会造成网络设计中神经元数目过少或者过多,在函数逼近中就会造成过适性和不适性。
最后,径向基神经网络的一个重要作用就是进行变量分类。
P=[12;
22;
11]’;
Tc=[123];
),P(2,:
),’。
’,'
markersize'
,30)
3
text(P(1,i)+0.1,P(2,i),sprintf(’class%g'
,Tc(i)));
axis([0303]);
title(’三向量及其类别'
P(1,:
)’);
ylabel(’P(2,:
)'
T=ind2vec(Tc);
spread=1;
net=newpnn(P,T,spread);
A=sim(net,P);
Ac=vec2ind(A);
plot(P(1,:
),P(2,:
),'
’,’markersize’,30)
text(P(1,i)+0。
1,P(2,i),sprintf('
class%g'
,Ac(i)));
axis([0303])
网络测试结果'
P(2,:
p=[2;
1.5];
a=sim(net,p);
ac=vec2ind(a);
plot(P
(1),P
(2),’*’,'
markersize’,10,’color'
,[100])
text(p
(1)+0.1,p
(2),sprintf(’class%g’,ac))
title(’对新向量进行分类’)
p(1,:
)与p
(1)’)
p(2,:
)与p
(2)’)
p1=0:
05:
3;
p2=p1;
[p1,p2]=meshgrid(p1,p2);
pp=[p1(:
),p2(:
)]’;
aa=sim(net,pp);
aa=full(aa);
m=mesh(p1,p2,reshape(aa(1,:
),length(p1),length(p2)));
set(m,'
facecolor’,[00。
51],'
linestyle'
’none'
m=mesh(p1,p2,reshape(aa(2,:
),length(p1),length(p2)));
set(m,’facecolor’,[00.10.5],’linestyle'
none'
m=mesh(p1,p2,reshape(aa(3,:
),length(p1),length(p2)));
set(m,'
facecolor'
[0。
501],'
linestyle’,’none'
plot3(p(1,:
),p(2,:
),[111]+0.1,’.’,'
plot3(p
(1),p
(2),1.1,'
*'
'
,10,’color’,[100])
view
(2)
title(’向量分类立体图’);
)与p
(1)’);
ylabel(’p(2,:
)与p
(2)'
最后再来看一个广义回归神经(GRNN)网络用在函数逼近上的例子:
P=[12345678];
T=[01232121];
plot(P,T,'
.'
markersize’,30);
axis([09—14])
待逼近函数'
P'
T’);
axis([09—14])
待逼近函数’);
P’);
T'
spread=0.7;
net=newgrnn(P,T,spread);
A=sim(net,P);
outputline=plot(P,A,'
o’,'
markersize’,10,'
color’,[100]);
检测网络’)
ylabel(’T和A'
p=3。
a=sim(net,p);
plot(p,a,'
+’,'
10,'
color’,[100]);
title(’新输入值’)
xlabel(’P和p'
ylabel(’T和a’)
P2=0:
9;
A2=sim(net,P2);
plot(P2,A2,'
linewidth’,4,'
color'
,[100])
title(’逼近函数’)
P和P2'
T和A2'
2010—7—24
今天学习最后一种神经网络——反馈神经网络.
什么是反馈的神经网络?
与前面的网络不同,这里的神经网络包含有延迟的输入或者输出的反馈。
这样使得网络具有了记忆功能。
首先是Hopfield神经网络。
在help文档的demo里有一个很好的实例,这里就不举出来了。
那个例子个人理解可以看成是一个,最后的结果通过神经网络使得随机点最后运动与指定的点重合。
不过这个实例中的sim函数用法很特别,要注意一下。
接下来是Elman神经网络。
t=1:
20;
p1=sin(t);
p2=sin(t)*2;
plot(t,p1,'
r'
plot(t,p2,’b——’);
t1=ones(1,20);
t2=ones(1,20)*2;
p=[p1p2p1p2];
t=[t1t2t1t2];
Pseq=con2seq(p);
Tseq=con2seq(t);
R=1;
S2=1;
%RS2S1分别为输入元素的数目,输出层的神经元数,中间层的神经元数
net=newelm([-2,2],[S1,S2],{'
tansig'
’purelin’});
epochs=500;
net=train(net,Pseq,Tseq);
y=sim(net,Pseq);
figure
t5=1:
80;
p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 神经网络