一个很简单的神经网络程序相信对初学者有帮助

源代码在线查看: untitled.m

软件大小: 2 K
上传用户: xujinliner
关键词: 神经网络 初学者 程序
下载地址: 免注册下载 普通下载 VIP

相关代码

				%(1)问题的提出
				%首先应用rands()函数随计生成1000个输入数据,形成输入向量P,如图
				p=rands(2,1000);
				plot(p(1,:),p(2,:),'r');
				axis([-1 1  -1  1]);
				title('输入向量');
				xlabel('p(1)');
				ylabel('p(2)');
				%(2)网络设计
				%设计一个二维自组织特征影射网络,其神经元层有30个神经元,代表输入响亮的类别.
				%二维神经元为5*6的排列形式,其相互距离应为MANHATTAN距离函数mandist()计算,未经
				%训练的网络所有神经元的权值均位于向量中兴,如图2
				net=newsom([0 1;0 1],[5 6]);
				cla
				plotsom(net.iw{1,1},net.layers{1}.distances);
				axis([0 1 0 1]);
				title('初始网络权值');
				xlabel('w(i,1)');
				ylabel('w(i,2)');
				%(3)网络训练
				%设置训练参数,应用train()函数进行网络训练,训练过程中网络权值开始向输入向量移动.
				net.trainParam.epochs=1;
				net=train(net,p);
				%TRAINR,Epoch 0/1;
				%TRAINR,Epoch 1/1;
				%TRAINR,Maximum epoch reached.;
				%网络测试
				%经过训练后,网络权值经过排序逐步缩小领域的大小,最后竞争层的神经的神经元通过调整,每个神经元都代表一个输入区域
				%邻近神经元权值响亮的定位也反映了输入向量的拓扑结构.下面绘制出训练后网络的权值,入图
				cla 
				plotsom(net.iw{1,1},net.layers{1}.distances)
				axis([-1 1 -1 1]);
				title('训练后的网络');
				xlabel('w(i,1)');
				ylabel('w(i,2)');
				%从图中可以看出,训练后的网络将输入向量自由排序成了30个类别.下面应用向量psim()函数仿真对网络进行测试.
				p=[0.5;0.3];
				a=sim(net,p);
							

相关资源