资源描述:
《人工神经网络matlab源程序(可运行).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、人工神经网络matlab源程序代码,有注释%产生指定类别的样本点,并在图中绘出X=[01;01]; %限制类中心的范围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([01;01],5,0.1);%设置神经元数目为
2、5%得到网络权值,并在图上绘出figure;plot(P(1,:),P(2,:),'+r');w=net.iw{1}holdon;plot(w(:,1),w(:,2),'ob');holdoff;title('输入样本向量及初始权值');xlabel('p(1)');ylabel('p(2)');figure;plot(P(1,:),P(2,:),'+r');holdon;%训练网络net.trainParam.epochs=7;net=init(net);net=train(net,P);%得到训练后的网络权值,并在图上绘出w=net.iw{1}plot
3、(w(:,1),w(:,2),'ob');holdoff;title('输入样本向量及更新后的权值');xlabel('p(1)');ylabel('p(2)');a=0;p=[0.6;0.8];a=sim(net,p)-------------------example8_2%随机生成1000个二维向量,作为样本,并绘出其分布P=rands(2,1000);plot(P(1,:),P(2,:),'+r')title('初始随机样本点分布');xlabel('P(1)');ylabel('P(2)');%建立网络,得到初始权值net=newsom([01;
4、01],[56]);w1_init=net.iw{1,1}%绘出初始权值分布图figure;plotsom(w1_init,net.layers{1}.distances)%分别对不同的步长,训练网络,绘出相应的权值分布图fori=10:30:100 net.trainParam.epochs=i; net=train(net,P); figure; plotsom(net.iw{1,1},net.layers{1}.distances)end%对于训练好的网络,选择特定的输入向量,得到网络的输出结果p=[0.5;0.3];a=0;a=si
5、m(net,p)--------------------------example8_3%指定输入二维向量及其类别P=[-3-2-2 0 0 0 0+2+2+3; 0+1-1+2+1-1-2+1-1 0];C=[1112222111];%将这些类别转换成学习向量量化网络使用的目标向量T=ind2vec(C)%用不同的颜色,绘出这些输入向量plotvec(P,C),title('输入二维向量');xlabel('P(1)');ylabel('P(2)');%建立网络net=newlvq(minmax(P),4,[.6.4],0.1);
6、%在同一幅图上绘出输入向量及初始权重向量figure;plotvec(P,C)holdonW1=net.iw{1};plot(W1(1,1),W1(1,2),'ow')title('输入以及权重向量');xlabel('P(1),W(1)');ylabel('P(2),W(2)');holdoff;%训练网络,并再次绘出权重向量figure;plotvec(P,C);holdon;net.trainParam.epochs=150;net.trainParam.show=Inf;net=train(net,P,T);plotvec(net.iw{1}',v
7、ec2ind(net.lw{2}),'o');%对于一个特定的点,得到网络的输出p=[0.8;0.3];