毕业论文(3)

2019-01-18 20:49

传统分类器的工作过程

第一级输出的匹配值仍是以符号表示的, 仍是以顺序, 串行的方法传递给第二级。通过符号译码, 选择出具有最大值的类别。最后输出表示该类的符号, 从而完成了整个分类工作. 整个过程顺序、串行传递信息, 速度慢, 工作中无法自我改善, 因此也无自适应能力。虽然也可将这种具有自适应能力的神经网络分类器的结构分成两级, 但其工程过程和传统的分类器不大一样。首先通过N 个输入连线并行地而不是串行地将输入模式送入第一级。每一连线输入的均为模拟值. 对于二值输入, 该值可取两个不同的数. 对具有连`戈值的输入, 则可在一很大范围内变化。

具有自适应功能的人工神经网络分类器的工作过程

第一级的任务仍然是计算匹配值, 并通过M 根替拟的输出线将结果并行地传给下一级。这里不仅输入模式的输入和级问的信息传递都是并行的,另一方面也免除了外部表示, 内部表示的互相转化。在第二级中不仅要选择最大的匹配值,而且还通过一定的算法对该最大匹配值还要使之扩大。在第一级对第二级的输入对M 类中的每一类均有一个输入, 但在分类结束时, 仅仅对应最可能的那一类的输出为“ 强” ( 或“ 高” ), 其它输出均为“ 弱” ( 或“ 低勺。在这种模型中, 对每一类均有输出, 只要它们是“ 突出” 的, 那未这些输出都必须被保存, 而且在下一级中进一步处理。在最简单的分类系统中, 这些输出可能直接接到标志着不同类别的灯泡上进行显示。这一些较为复杂的情况下, 这些输出线可能连到下一级( 即这种情况不只限于两级) , 而且下一级的输入可能是包含其它方式, 也可能是时变的。

如果输出提供了正确的类别, 那未这些信息、分类器的输出可反馈到第一级, 利用某种学习的算法产生一个自适应的权重。这样产生的自适应性的权重可以使得结果更加令人满意。 上述人工神经网络分类器能完成三种不同的用途。上而描述的是第一种, 分类器用来辨认哪一类( 输出) 最能代表输入模式。而且允许输入时有杂声干扰

[iv]

第二种用途是用作联想记忆器( C O n to t - A , 别, 幼bl e / A S co iat i ve M e m or y )。此时, 各类输出样本是理想的, 输入模式用来决定产生何种样本。这种联想记忆器对于信息残缺不全, 即只有部分信息而想获得全部信息时这就象只知作者名或文章名, 而想获得作者的全部信息( 作者名, 文章名, 出版物, 出版时间, 页数, 起止页号? ) , 或象一张残缺的照片要复原的情况是一样的. 当然这种分类器通常要对图四所示的分类器额外增加一级再产生最可能类别的样本. 但对某些神经网络( 如H叩if d d 网络) 这第三级却不必要。第三种用途是用作语音、图象识别的信息的压缩, 以减少传输模拟数据所需的比特( ib o 数, 这种压缩数据量的办法, 既不能丢失信息, 又要能提高速度。

[v]

matlab 源程序代码:

%产生指定类别的样本点,并在图中绘出 X = [0 1; 0 1]; % 限制类中心的范围 clusters = 5; % 指定类别数目

points = 10; % 指定每一类的点的数目 std_dev = 0.05; % 每一类的标准差 P = nngenc(X,clusters,points,std_dev); plot(P(1,:),P(2,:),'+r'); title('输入样本向量'); xlabel('p(1)'); ylabel('p(2)'); %建立网络

net=newc([0 1;0 1],5,0.1); %设置神经元数目为5 %得到网络权值,并在图上绘出 figure;

plot(P(1,:),P(2,:),'+r'); w=net.iw{1} hold on;

plot(w(:,1),w(:,2),'ob'); hold off;

title('输入样本向量及初始权值'); xlabel('p(1)'); ylabel('p(2)'); figure;

plot(P(1,:),P(2,:),'+r'); hold on; %训练网络

net.trainParam.epochs=7; net=init(net); net=train(net,P);

%得到训练后的网络权值,并在图上绘出 w=net.iw{1}

plot(w(:,1),w(:,2),'ob'); hold off;

title('输入样本向量及更新后的权值'); xlabel('p(1)'); ylabel('p(2)'); a=0;

p = [0.6 ;0.8]; a=sim(net,p)

%指定输入二维向量及其类别

P = [-3 -2 -2 0 0 0 0 +2 +2 +3; 0 +1 -1 +2 +1 -1 -2 +1 -1 0]; C = [1 1 1 2 2 2 2 1 1 1];

%将这些类别转换成学习向量量化网络使用的目标向量 T = ind2vec(C)

%用不同的颜色,绘出这些输入向量 plotvec(P,C),

title('输入二维向量'); xlabel('P(1)'); ylabel('P(2)'); %建立网络

net = newlvq(minmax(P),4,[.6 .4],0.1); %在同一幅图上绘出输入向量及初始权重向量 figure; plotvec(P,C) hold on W1=net.iw{1};

plot(W1(1,1),W1(1,2),'ow') title('输入以及权重向量'); xlabel('P(1), W(1)'); ylabel('P(2), W(2)'); hold off;

%训练网络,并再次绘出权重向量 figure; plotvec(P,C); hold on;

net.trainParam.epochs=150; net.trainParam.show=Inf; net=train(net,P,T);

plotvec(net.iw{1}',vec2ind(net.lw{2}),'o'); %对于一个特定的点,得到网络的输出 p = [0.8; 0.3]; a = vec2ind(sim(net,p))

实验举例:

(1)

%以FRP-混凝土面内剪切试验说明matlab神经元网络的使用

%读入试验数据,数据格式为

% FRP厚度(mm) FRP宽度(mm) FRP粘结长度(mm) FRP弹模(GPa) 混凝土抗拉强度(MPa) 混 凝土宽度(mm)

%[ 0.169 50 130 97 2.9 100]' %网络输出为极限承载力

FID1=fopen('Direct_Shear_Test.txt','r'); [Test_Data,count]=fscanf(FID1,'%e',[7 inf]); %前6列为参数,最后1列是试验承载力 fclose(FID1); S1=8; %设定数值边界 Boundry=zeros(6,2); for i=1:6

Boundry(i,:)=minmax(Test_Data(i,:)); end %初始化网络

net=newff(Boundry,[S1 1],{'tansig','purelin'},'trainscg'); %网络训练

net.trainParam.epochs=50000; net.trainParam.show=300; net.trainParam.goal=0.0001;

net=train(net, Test_Data(1:6,:),Test_Data(7,:)); %验证网络

testp=Test_Data(1:6,20); resultp=sim(net,testp)

%如果要使用网络只需要先读入存档的训练好的网络 loadDirect_Shear_net.mat %接着输入试验参数

a=[ 0.169 50 130 97 2.9 100]'; %得到承载力


毕业论文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:语文教案(基础模块)下册 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: