您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 人工神经网络matlab程序
1神经网络MATLAB程序%根据预测方法得到输入向量和目标向量P=[0.44130.47070.69530.81330.43790.46770.69810.80020.45170.47250.70060.8201;0.43790.46770.69810.80020.45170.47250.70060.82010.45570.47900.70190.8211;0.45170.47250.70060.82010.45570.47900.70190.82110.46010.48110.71010.8298;]';T=[0.45570.47900.70190.8211;0.46010.48110.71010.8298;0.46120.48450.71880.8312]';%输入向量的取值范围为[01],用threshold来标记threshold=[01;01;01;01;01;01;01;01;01;01;01;01];%创建一个Elman神经网络,隐含层的神经元个数为17个,4个输出层神经元,隐含层激活函%数为tansig,输出层激活函数为purelinnet=newelm(threshold,[17,4],{'tansig','purelin'});net.trainParam.epochs=3000;net=init(net);net=train(net,P,T);%输入测试数据P_test=[0.45570.47900.70190.82110.46010.48110.71010.82980.46120.48450.71880.8312]';T_test=[0.46150.48910.72010.8330]';y=sim(net,P_test)%在测试数据下,计算网络的输出和实际目标向量之间的差值error=y-T_test;%在坐标平面上画出差值曲线plot(1:4,error,'-');程序运行后,结果如图2-29所示,命令行窗口中的结果如下:……TRAINGDX,Epoch2950/3000,MSE2.65822e-005/0,Gradient0.000916222/1e-006TRAINGDX,Epoch2975/3000,MSE2.64788e-005/0,Gradient0.000221814/1e-006TRAINGDX,Epoch3000/3000,MSE2.6293e-005/0,Gradient0.000102435/1e-006TRAINGDX,Maximumepochreached,performancegoalwasnotmet.y=0.47610.49160.72170.83442Hopfield%数字1的点阵表示one=[-1-1-11111-1-1-1-1-1-11111-1-1-1-1-1-11111-1-1-1-1-1-11111-1-1-1-1-1-11111-1-1-1-1-1-11111-1-1-1-1-1-11111-1-1-1-1-1-11111-1-1-1-1-1-11111-1-1-1-1-1-11111-1-1-1];%数字2的点阵表示two=[11111111-1-111111111-1-1-1-1-1-1-1-111-1-1-1-1-1-1-1-111-1-111111111-1-111111111-1-111-1-1-1-1-1-1-1-111-1-1-1-1-1-1-1-111111111-1-111111111-1-1];%设定网络的目标向量T=[one;two]';%创建一个Hopfield神经网络net=newhop(T);%给定一个受噪声污染的数字2的点阵,所谓噪声是指数字点阵中某些本应为1的方块变成了-1no2={[111-111-11-1-111111111-1-1-11-11-1-111-1-1-1-11-11-111-1-111111111-1-111111111-1-111-1-1-1-1-1-1-1-111-1-1-1-1-1-1-1-1111-11111-1-111-111111-1-1]'};%对网络进行仿真,网络的仿真步数为5tu2=sim(net,{1,5},{},no2)%输出仿真结果向量矩阵中的第3列向量,并将其转置tu2{3}'程序运行后,在命令行窗口得到下面的结果:ans=Columns1through2111111111-1-111111111-1-1-1Columns22through42-1-1-1-1-111-1-1-1-1-1-1-1-111-1-111Columns43through63111111-1-111111111-1-111-1Columns64through84-1-1-1-1-1-1-111-1-1-1-1-1-1-1-11111Columns85through1001111-1-111111111-1-1由结果可以看出所得到的点阵与数字2的正常点阵是一致的,表明网络可以从受到污染的数字2的点阵中识别出数字2,证明网络是有效的。3自组织网络学习算法建立一个自组织神经网络对上述数据分类,给定某个地区的男、女出生比例分别为0.5,0.5,测试训练后的自组织神经网络的性能,判断其属于哪个类别。解答:MATLAB代码如下:P=[0.55120.51230.50870.50010.60120.52980.50000.49650.51030.5003;0.44880.48770.49130.49990.39880.47020.50000.50350.48970.4997];%创建一个自组织神经网络,[01;01]表示输入数据的取值范围在[0,1]之%间,[3,4]表示竞争层组织结构为34,其余参数取默认值net=newsom([01;01],[34]);net.trainParam.epochs=500;net=init(net);net=train(net,P);y=sim(net,P);%获取训练后的自组织神经网络的权值w1=net.IW{1,1};%绘出训练后自组织神经网络的权值分布图plotsom(w1,net.layers{1}.distances);%输入测试数据p=[0.5;0.5];%对网络进行测试y_test=sim(net,p);%将测试数据所得到的将单值向量组变换成下标向量y_test=vec2ind(y_test)程序运行后得到训练后的权值分布如图2-24所示,在命令行窗口得到下面结果:%使用TRAINR作为训练函数,最大训练次数为500次TRAINR,Epoch0/500TRAINR,Epoch25/500TRAINR,Epoch50/500TRAINR,Epoch75/500……TRAINR,Epoch475/500TRAINR,Epoch500/500TRAINR,Maximumepochreached.%训练结束后的结果y=41010121612121012%输入测试数据后所得到的结果y_test=124LVQ%输入向量P及其对应的类别向量CP=[-6-4-20000246;02-212-212-20];C=[1112222111];%将类别向量C转换为目标向量TT=ind2vec(C);%绘制输入向量P,如图2-26所示,用颜色将输入向量分为两类plotvec(P,C,'*r');%输入向量绘制在一个横坐标在[-88]之间,纵坐标在[-33]之间的坐标平面内axis([-88-33]);%创建一个LVQ神经网络,隐含层有5个神经元,[0.60.4]表示在隐含层的权值中,有60%的%列的第一行的值为1,40%的列的第一行值为1,也就是说有60%的列属于第一类,40%属于%第二类,网络的其他参数取默认值net=newlvq(minmax(P),5,[0.60.4]);net.trainParam.epochs=100;net=train(net,P,T);%给定数据,输出网络的分类结果测试网络的性能p=[01;0.20];y=sim(net,p);yc=vec2ind(y)程序运行后,在命令行窗口中得到下面结果:%用TRAINR作为训练函数,最大训练次数为100次TRAINR,Epoch0/100TRAINR,Epoch4/100TRAINR,Performancegoalmet.%对给定数据,一个归于第2类,一个归于第1类yc=215RBF%输入从0开始变化到5,每次变化幅度为0.1x=0:0.1:5;y=sqrt(x);%建立一个目标误差为0,径向基函数的分布密度为%0.5,隐含层神经元个数的最大值为20,每增加5个%神经元显示一次结果net=newrb(x,y,0,0.5,20,5);t=sim(net,x);%在以输入x和函数值与网络输出之间的差值y-t坐标%上绘出误差曲线,并用"*"来标记函数值与网络输%出之间的差值plot(x,y-t,'*-');%关闭绘图句柄下次的图和已经绘制的图将不在现一张图上holdoff%打开一张新的绘图面figure%以x、y为横纵坐标,以蓝色的“*”绘图plot(x,y,'b*');holdon%以x、t为横纵坐标,以红色的“-”绘图plot(x,t,'r-');训练结束后,网络的逼近误差曲线如图2-22所示,在命令行窗口中的输出结果如下:%用NEWRB来训练网络,神经元个数为0,圴方和误差%为9.17903NEWRB,neurons=0,SSE=9.17903NEWRB,neurons=5,SSE=0.924825NEWRB,neurons=10,SSE=0.0394536NEWRB,neurons=15,SSE=0.00184102NEWRB,neurons=20,SSE=3.75484e-005
本文标题:人工神经网络matlab程序
链接地址:https://www.777doc.com/doc-2704238 .html